Piotr3qx Posted August 20, 2022 Posted August 20, 2022 Cześć, mam dziwny problem, którego nie potrafię naprawić ani znaleźć solucji w internecie. Niedawno zaktualizowałem PrestaShop do najnowszej wersji. Po aktualizacji jest problem z edycją produktów. Podczas edytowania produktu (albo po jego utworzeniu poprzez duplikację) gdzie usuwane są / zmieniane cechy / marki i zapisaniu zmian kategorie produktu są popsute. Dodawane są nowe losowe kategorie a kategoria główna jest zmieniona na jakąś inną losową. Czasami są sytuacje, gdzie cechy są losowo usuwane. Pierwszy raz się z tym spotykam, w internecie nie znalazłem podobnego problemu i nawet nie mam pomysłu gdzie rozpocząć naprawę tego problemu. Ktoś coś może doradzi lub pomoże? Share this post Link to post Share on other sites More sharing options...
endriu107 Posted August 20, 2022 Posted August 20, 2022 W jaki sposób sklep był aktualizowany? Share this post Link to post Share on other sites More sharing options...
Piotr3qx Posted August 20, 2022 Posted August 20, 2022 Poprzez moduł 1 Click Upgrade Share this post Link to post Share on other sites More sharing options...
endriu107 Posted August 20, 2022 Posted August 20, 2022 Pierwsza myśl była taka że po upgradzie cos się posypało z ID produktów w bazie stąd pytanie w jaki sposób to było zrobione, teoretycznie 1-click nie powinien tym namieszać ale problem w takich przypadkach jest właśnie w bazie danych. Czy nowo dodane produkty mają właściwy numer ID? Share this post Link to post Share on other sites More sharing options...
Piotr3qx Posted August 20, 2022 Posted August 20, 2022 Co masz na myśli pisząc właściwy numer ID? Każdy kolejny nowo dodany produkt ma o jeden numer większy ID od pozostałego. Przy pierwszej edycji produktu (lub jego dodaniu) są pomieszane kategorie. Po drugiej aktualizacji zmiany są zapisywane poprawnie. Czasami dopiero po trzeciej aktualizacji nic się nie psuje. Po upgradzie na stronie edycji produktu był błąd JS, który myślałem że powoduje problem. Konsola pokazywała błąd ponownej deklaracji obiektu moduleCardController. Przyczynę błędu znalazłem (plik dwa razy był ładowany w przeglądarce, raz przez default theme a drugi raz z modułu ps_bo) i w module ps_bo dodałem warunek, że jeżeli jest strona edycji produktu to ma nie ładować tego pliku. Ale wątpię by to miało jakiś związek z tym błędem Share this post Link to post Share on other sites More sharing options...
endriu107 Posted August 20, 2022 Posted August 20, 2022 Maiłem na myśli auto inkrementacje ID i z tego co piszesz działa właściwie. Problem z zapisem przez moduleCardController ostatnio widzę coraz częściej i bardzo często jest on powodowany również przez różne pagebuildery z szablonów. Na początek posprawdzałbym podstawowe rzeczy po upgradzie takie jak usunięcie zawartości folderu var/cache, wyczyszczenie pamięci podręcznej w przeglądarce, zakładam że wersję PHP masz zgodną z wersją presty i w bazie danych masz wystarczającą ilość miejsca. Później trzeba szukać głębiej i tu bym sprawdził w bazie danych czy to co się wyświetla w sklepie jest zgodne z tym co jest w bazie, czy zapis danych działa prawidłowo w bazie to ci pozwoli wykluczyć cache. Share this post Link to post Share on other sites More sharing options...
Piotr3qx Posted August 20, 2022 Posted August 20, 2022 Autoinkrementacja działa poprawnie. Page Buildera żadnego nie ma i nie było nigdy. Sklep jest oparty na czysto stworzonym szablonie. Pamięć podręczna była kilka razy czyszczona (z powodu błędów w konsoli JS musiałem kilka razy czyścić var/cache aby klientowi wszystko dobrze się wyświetlało). PHP wersja 7.4. Baza danych waży 184.5 MB także trochę dużo (poprzednio śmietnik panował na sklepie pewnie stąd taka wielkość). Reinstall Presty może coś tu pomóc? Aby wyczyścić wszystko na serwerze, na nowo zainstalować Prestę i wgrać bazę danych Share this post Link to post Share on other sites More sharing options...
endriu107 Posted August 20, 2022 Posted August 20, 2022 Jeśli błędy są w bazie danych to reinstalacja nic nie da. Share this post Link to post Share on other sites More sharing options...
Piotr3qx Posted August 21, 2022 Posted August 21, 2022 Teraz w sumie przypomniałem o jednej sytuacji, która również mogła mieć przyczynę tego problemu. Jakoś niedługo po aktualizacji Presty chciałem stworzyć nowy produkt, chyba żadnych informacji nie zdołałem wypełnić i zamknąłem kartę. Na stronie sklepu natomiast pojawił się pusty produkt, bez ceny bez nazwy bez obrazka. Pusta miniaturka była z ceną 0. Co było dla mnie dziwne to na liście produktów w panelu tego produktu nie było. Nie dało się w niego wejść i go zedytować lub usunąć. Dopiero podmieniając adres URL innego edytowanego produktu (zmieniłem na ID pustego produktu w sklepie) udało mi się dostać do panelu edycji gdzie wypełniając dane pojawił się na liście produktów w panelu. Czy taka sytuacja mogła coś namieszać w bazie danych? Może coś jest z tą sytuacją związane Share this post Link to post Share on other sites More sharing options...
endriu107 Posted August 21, 2022 Posted August 21, 2022 Nie sądzie z ty problemem nie raz się spotkałem i nie zauważyłem aby miał wpływ na cokolwiek poza samym produktem. Share this post Link to post Share on other sites More sharing options...
Piotr3qx Posted August 25, 2022 Posted August 25, 2022 Zrobiłem reinstall PrestaShop i problem niestety nadal występuje... Porównałem zawartość bazy danych z wyświetlanymi informacjami i bardzo mnie coś dziwi. Zauważyłem, że w bazie danych produkt ma zapisaną główną kategorię o ID 2, w tabeli `category_product` ma przypisane ID kategorii 2, 1600 oraz 1601. Natomiast na stronie edycji produktu jest zaznaczona (i jest ona główną) kategoria o ID 1649. Czyli informacje pochodzące z bazy danych kompletnie nie pokrywają się z informacjami wyświetlanymi na stronie edycji produktu Share this post Link to post Share on other sites More sharing options...
Piotr3qx Posted August 25, 2022 Posted August 25, 2022 Dopiero jak wejdę na froncie w podstronę produktu to główna kategoria w bazie danych jest zmieniana Share this post Link to post Share on other sites More sharing options...
Piotr3qx Posted August 26, 2022 Posted August 26, 2022 Mam pewien postęp w moim problemie. Znalazłem tymczasowe rozwiązanie. Ale nie potrafię zrozumieć dlaczego to rozwiązanie działa... Zapis danych edycji produktu następuje ajaxowo. W pliku JS, w miejscu wykonywania zapytania o aktualizację produktu, po pozytywnym zwrocie odpowiedzi z serwera, dodałem linijkę kodu window.location.reload(true) - po to aby przeładować od razu tą stronę. Ku memu zaskoczeniu pomogło, nie ma losowych kategorii, pola są poprawnie zapisywane. I teraz pytanie, może ktoś będzie potrafił wyjaśnić mi, dlaczego coś takiego zadziałało. Co dzieje się po wykonaniu ajaxa a przed ręcznym odświeżeniem strony? Czy po ajaxie formularz edycji produktu jest nadpisywany informacjami zwrotnymi? Share this post Link to post Share on other sites More sharing options...
endriu107 Posted August 26, 2022 Posted August 26, 2022 Szczerze to nie wiem co to powoduje, mógłbym obstawić że dane produktów nie są w 100% kompatybilne z schematem produktu w bazie i być może faktyczne ajax w jakiś sposób działa na obiekt product który nadpisuje sobie braki. Jeśli tak to teoretycznie szybszym sposobem byłby ponowny import produktów poprzez panel gdzie mógłbyś zaimportować np. nazwę produktu na podstawie ID w celu wywołania obiektu na każdym produkcie. Share this post Link to post Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now