Zawartość artykułu
W jakim środowisku występuje błąd?
Błąd występuje podczas aktualizacji sklepu PrestaShop w wersji 1.6.X (u nas dokładnie 1.6.1.20) do najnowszej wersji w tej gałęzi. Obecnie jest to: 1.6.1.24
Wersja modułu do aktualizacji to: v4.13.0:
Należy zaznaczyć, że moduł ten został zakualizowany z wersji V1.6.8 do najnowszej, czyli v4.13.0: jak napisano wyżej. I to ta wersja modułu „Aktualizacja 1 kliknięciem” jest odpowiedzialna za bląd opisywany w tym artykule.
Objawy problemu
Podczas procesu aktualizacji nie wiadomo skąd pojawia się następujący komunikat:
Do you want to restore V1.6.20.xxx
Kompletnie ubija to aktualizację oprogramowania i może wręcz uszkodzić sklep 🙁
Komunikat w logu:
Rozwiązanie – naprawienie aktualizacji PrestaShop do wersji 1.6.1.24
Jak wybrnąć z tego problemu?
Przede wszystkim należy najpierw przywrócić starą wersję plików i bazy sklepu. Zasięgnij pomocy u administratora serwera.
Kolejnym krokiem jest usunięcie obecnego modułu: „Aktualizacja 1 kliknięciem”
W naszym przypadku (jak napisano wyżej) miał on wersję: V1.6.8
Z menu widocznego na screenie wybieramy opcję „Odinstaluj”
Następnie wgrywamy moduł w wersji v4.12.0. Moduł można pobrać stąd:
Plik zip instalujemy jak każdy inny moduł w dziale moduły:
UWAGA! Ważne aby nie aktualizować modułu po jego zainstalowaniu. Będziemy wtedy w punkcie wyjścia 🙂
Następnym krokiem jest wybranie z zaznaczonego przycisku opcji „Wyczyść” i zresetowanie modułu:
Następnie wchodzimy opcję „Konfiguruj” pod tym samym przyciskiem i otwieramy konfigurację modułu.
Ustawiamy moduł wg własnych wymagań. Dobrze jest wyłączyć tworzenie kopii bezpieczenstwa plików i bazy (z założenia i tak je posiadamy):
W tym momencie – aktualizacja powinna przebiec prawidłowo.
Usunięcie ewentualnej blokady akutalizacji.
W niektórych instalacjach PrestaShop możesz natrafić na blokadę aktualizacji skryptu w zwiazku z tym, że sam moduł „Aktualizacja 1 kliknięciem” jest nieaktualny:
Można to na szczęście łatwo obejść 🙂
Otwórz plik:
modules/autoupgrade/classes/UpgradeSelfCheck.php
Znajdź funkcję:
public function isModuleVersionLatest() { if (null !== $this->moduleVersionIsLatest) { return $this->moduleVersionIsLatest; } return $this->moduleVersionIsLatest = $this->checkModuleVersionIsLastest($this->upgrader); }
I w jej wnętrzu dopisz zwracanie TRUE:
public function isModuleVersionLatest() { if (null !== $this->moduleVersionIsLatest) { return $this->moduleVersionIsLatest; } return true; return $this->moduleVersionIsLatest = $this->checkModuleVersionIsLastest($this->upgrader); }
Alternatywny sposób rozwiązania tego problemu
Jeśli Twoje wysiłki spełzły na niczym rozważ wykonanie akutalizacji na innym serwerze. Prawdopodobnie Twój serwer ma włączony tryb strict mode w MySQL i błędy mogą wystąpić czy akualizacji bazy danych. Są różne sposoby aby wyłaczyć ten tryb, jednak jest to dość pracochłonne. Chyba łatwiej po prostu przenieść instalację na mniej nadgorliwy serwer i tam po prostu zakutalizować PrestaShop.
Więcej informacji na temat wyłączenie trybu strict mode w MySQL:
[…] Problem z modułem do akutalizacji PrestaShop 1.6 – Błąd podczas aktualizacji bazy danych. M… […]