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