Press "Enter" to skip to content

Błąd dodawania atrybutu do produktu: Nieoczekiwany błąd: CannotAddCombinationException PrestaShop 8

Admin 0

Jeśli używasz zupełnie nowej instalacji PrestaShop 8 i wyczyściłeś/aś katalog przez pscleaner:

Usunięcie testowych danych ze sklepu, wyczyszczenie sklepu z testowego asortymentu

Możesz natrafić na bardzo irytujący błąd:

Nieoczekiwany błąd. [PrestaShop\PrestaShop\Core\Domain\Product\Combination\Exception\CannotAddCombinationException code 0]

 

Co dziwne – sklep jest zupełnie „czysty”. Problem pojawia się w pudełkowej wersji sklepu wyczyszczonego przez ww. moduł pscleaner. I to właśnie może mieć znaczenie. Po głębszej analizie i włączeniu trybu debugowania w dziale „Wydajność” natrafiamy na problematyczne zapytanie SQL, które nie może być zrealizowane:

INSERT INTO `ps_product_attribute_lang` (`id_product_attribute`, `available_now`, `available_later`, `id_lang`) VALUES ('1', '', '', '1')

Jeśli spróbować wywołać go w phpMyAdmin:

Mamy błąd:

#1062 - Powtórzone wystąpienie '1-1' dla klucza 'PRIMARY'

I tutaj jest szkopuł. Prawdopodobnie moduł pscleaner, który tutaj użyliśmy jest niedostosowany do naszej wersji PrestaShop. Należy użyć najnowszej wersji. Ta, która została użyta nie usunęła w całości danych – tutaj z tabeli wiążącej produkt z atrybutami. Przez co nie mozna dodać nowych wierszy i nie pomoże ani usuwanie atrybutów ani dodawanie nowych produktów.

Aktualną wersję pobierzesz ze strony: https://github.com/PrestaShop/pscleaner

Można też zastosować zapytanie SQL, które kompletnie usunie tabele związane z atrybutami:

TRUNCATE TABLE ps_product_attribute;
TRUNCATE TABLE ps_product_attribute_combination;
TRUNCATE TABLE ps_product_attribute_image;
TRUNCATE TABLE ps_product_attribute_lang;
TRUNCATE TABLE ps_product_attribute_shop;
TRUNCATE TABLE ps_attribute;
TRUNCATE TABLE ps_attribute_group;
TRUNCATE TABLE ps_attribute_group_lang;
TRUNCATE TABLE ps_attribute_group_shop;
TRUNCATE TABLE ps_attribute_lang;
TRUNCATE TABLE ps_attribute_shop;
TRUNCATE TABLE ps_layered_indexable_attribute_group;
TRUNCATE TABLE ps_layered_indexable_attribute_group_lang_value;
TRUNCATE TABLE ps_layered_indexable_attribute_lang_value;
TRUNCATE TABLE ps_layered_product_attribute;

UWAGA! Zapytanie pernametnie usunie te dane! Najlepiej wykonaj za wczasu kopię bezpieczeństwa.

Po tej czynności dodanie atrybutu już działa bez problemu:

Powyższe zapytanie kompletnie usunie wszystkie atrybuty. Jeśli część nich musi zostać musisz usunąć dane wybiórczo a tabelom z cechą auto_increment musisz przypisać odpowiednie wartosci końcowe. Więc trochę więcej kombinatoryki..

grafika:wallpaperup.com

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Zobacz także !
Opis w dziale kontakt w PrestaShop 8.x