Press "Enter" to skip to content

Krytyczny błąd przy wczytywaniu zamówienia – PrestaShop 1.7.7.1… Ups … wygląda na to, że wystąpił nieoczekiwany błąd

Admin 1

Błąd z wczytaniem detali zamówienia w PrestaShop

Nieoczekiwany błąd w PS 1.7.7.1. Objawia on się poniższym monitem po próbie wczytania wybranego zamówienia (co ciekawe inne mogą działać prawidłowo):

Problem z otwarciem zamówienia w PrestaShop 1.7.7.1
Ups ... wygląda na to, że wystąpił nieoczekiwany błąd

Type error: Argument 4 passed to PrestaShop\PrestaShop\Core\Domain\Order\QueryResult\OrderShippingAddressForViewing::__construct() must be of the type string, null given, called in /home/prestashop/src/Adapter/Order/QueryHandler/GetOrderForViewingHandler.php on line 270

[Symfony\Component\Debug\Exception\FatalThrowableError 0]

Wgląd w logi, włączenie (jak sugeruje grafika) trybu debugowania i inne analizy nic nie dają..

Okazuje się, że problemem są wartości NULL w polach które nie powinny mieć takich wartości i raczej powinny być stringiem – nawet pustym. Tak z resztą opisuje to ww. błąd.

Natomiast nie wiadomo co może to powodować?! Może niektóre moduły albo konfiguracja serwera? Ewentualnie wbudowany błąd w tę wersję, który zostanie kiedyś poprawiony. Na tę chwilę nie udało nam się tego ustalić.

Pełen wgląd w tą tematykę znajdziesz na Githubie w tym wątku: https://github.com/PrestaShop/PrestaShop/issues/22215

Rozwiązanie.

Ale jak tutaj wybrnąć z tego impasu?

Niezbędne czynności przed naprawą.

Wystarczy odpowiednie zapytanie do bazy danych. Ale uwaga! Najpierw wykonaj kopię bezpieczeństwa bazy danych w zapleczu PrestaShop! Tak na wypadek jakby nasze lekarstwo okazało się gorsze od choroby:) Następnie uzyskaj dostęp do PhpMyAdmin (tam też dobrze jakbyś wykonał/a kopię bezpieczeństwa przez narzędzie Export).

Prefix tabel w bazie danych.

Kolejnym krokiem jest ustalenie prefixu w tabelach w Twojej bazie danych. Standardowo to „ps_” jednak u Ciebie moze być inaczej. Tę informację znajdziesz w dziale Informacje w zapleczu PrestaShop.

Jeśli Twój prefix jest inny od domyślnego – odpowiednio zmień nasze zapytanie SQL.

Zapytanie SQL

A oto lecznicze zapytanie SQL.

UPDATE ps_address SET phone = '' WHERE phone IS NULL;
UPDATE ps_address SET phone_mobile = '' WHERE phone_mobile IS NULL;

UPDATE ps_order_detail SET id_order_invoice = '0' WHERE id_order_invoice IS NULL;
UPDATE ps_order_detail SET product_reference = '' WHERE product_reference IS NULL;
UPDATE ps_order_detail SET product_supplier_reference = '' WHERE product_supplier_reference IS NULL;
UPDATE ps_order_detail SET product_isbn = '' WHERE product_isbn IS NULL;
UPDATE ps_order_detail SET product_upc = '' WHERE product_upc IS NULL;
UPDATE ps_order_detail SET product_mpn = '' WHERE product_mpn IS NULL;
UPDATE ps_order_detail SET download_hash = '' WHERE download_hash IS NULL;
UPDATE ps_orders SET gift_message = '' WHERE gift_message IS NULL;

UPDATE ps_order_payment SET transaction_id = '' WHERE transaction_id IS NULL;
UPDATE ps_order_payment SET card_number = '' WHERE card_number IS NULL;
UPDATE ps_order_payment SET card_brand = '' WHERE card_brand IS NULL;
UPDATE ps_order_payment SET card_expiration = '' WHERE card_expiration IS NULL;
UPDATE ps_order_payment SET card_holder = '' WHERE card_holder IS NULL;

UPDATE ps_order_carrier SET tracking_number = '' WHERE tracking_number IS NULL;
UPDATE ps_order_carrier SET id_order_invoice = '0' WHERE id_order_invoice IS NULL;
UPDATE ps_order_carrier SET weight = '0' WHERE weight IS NULL;

UPDATE ps_product SET isbn = '' WHERE isbn IS NULL;
UPDATE ps_product SET upc = '' WHERE upc IS NULL;
UPDATE ps_product SET mpn = '' WHERE mpn IS NULL;
UPDATE ps_product SET unity = '' WHERE unity IS NULL;
UPDATE ps_product SET supplier_reference = '' WHERE supplier_reference IS NULL;
UPDATE ps_product SET location = '' WHERE location IS NULL;
UPDATE ps_product SET redirect_type = '301-category' WHERE redirect_type = '';
UPDATE ps_product SET available_date = '2021-03-16' WHERE available_date IS NULL;
UPDATE ps_product SET cache_default_attribute = '0' WHERE cache_default_attribute IS NULL;
UPDATE ps_product_shop SET unity = '' WHERE unity IS NULL;
UPDATE ps_product_shop SET redirect_type = '301-product' WHERE redirect_type = '';
UPDATE ps_product_shop SET available_date = '2021-03-16' WHERE available_date IS NULL;
UPDATE ps_product_shop SET cache_default_attribute = '0' WHERE cache_default_attribute IS NULL;

update ps_address set dni = '' where dni is null;
update ps_address set other = '' where other is null;
update ps_address set address2 = '' where address2 is null;
update ps_address set company = '' where company is null;
update ps_address set vat_number = '' where vat_number is null;

 

Oczywiście dla Twojego zapytania możesz zastosować inne daty niż ww. „2021-03-16” – ta jest użyta na podstawie daty publikacji tego artykułu:)

Wady i zalety naszego lekarstwa

Niestety nie zapewnia ona braku wystąpienia tego błędu w przyszłości a leczy doraźnie aktualne problemy. Możesz także w razie potrzeby użyć tego ponownie, gdy błąd się znowu pojawi. W każdym razie możesz sprawdzić detale zamówienia, co jest najważniejsze przy obsłudze zamówień w Twoim sklepie!

grafika: alphacoders.com

Dodaj komentarz

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

Witryna wykorzystuje Akismet, aby ograniczyć spam. Dowiedz się więcej jak przetwarzane są dane komentarzy.

Zobacz także !
PrestaShop 1.7 - po migracji sklepu niezalogowany użytkownik nie może…