Problemy instalacji Prestashop 1.6 z MySQL 5.7

Problemy instalacji Prestashop 1.6 z MySQL 5.7

 (0)    0

  PrestashopTechniczne  

Podczas instalacji Prestashop 1.6 z bazą danych MySQL w wersji 5.7 napotkałem dwa problemy spowodowane brakiem kompatybilności Prestashop z tą wersją MySQL.

Pierwszy problem występuje już podczas tworzenia tabel bazy danych, jest to komunikat

Błąd SQL dla zapytania Invalid default value for 'last_connection_date'.

Po naprawieniu tego błędu, drugi pojawia się podczas instalowania przykładowych danych, w logu błędów PHP pojawia się komunikat

Invalid argument supplied for foreach() in /var/www/html/prestashop_1.6.0.14/install/models/install.php on line 489.

Obydwa problemy spowodowane są zaostrzonymi zasadami analizy i wykonania zapytań SQL w bazie danych MySQL 5.7. Pierwszym i najbardziej oczywistym sposobem poradzenia sobie jest użycie MySQL w wersji 5.5 lub starszego. Jeżeli jednak nie ma takiej możliwości lub jest to zbyt skomplikowane, bez trudu można zmienić parametry używanej bazy danych w wersji 5.7.

Parametry sterujące wykonywaniem zapytań SQL znajdują się w zmiennej sql_mode, której wartość można sprawdzić w PhpMyAdmin korzystając z menu Zmienne lub wykonując zapytanie SELECT @@GLOBAL.sql_mode. To samo zapytanie można wykorzystać w dowolnym innym kliencie MySQL.

U mnie wykonanie tego zapytania zwraca:

mysql> select @@GLOBAL.sql_mode;
+-------------------------------------------------------------------------------------------------------------------------------------------+
| @@GLOBAL.sql_mode |
+-------------------------------------------------------------------------------------------------------------------------------------------+
| ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION |
+-------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0,00 sec)

Problemy powodują ustawienia: NO_ZERO_DATE oraz ONLY_FULL_GROUP_BY. Aby je usunąć, musiałem w pliku konfiguracyjnym MySQL, w sekcji [mysqld], dodać parametr:

sql-mode = STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

Jak widać, jest to wartość parametru pobranego wcześniej zapytaniem, ale z usuniętymi opcjami NO_ZERO_DATE oraz ONLY_FULL_GROUP_BY.

Parametr sql-mode może już być obecny, wówczas należy tylko zmodyfikować jego wartość.

Po każdej zmianie w pliku konfiguracyjnym należy zrestartować serwer MySQL.

 (0)    0

Twój komentarz został wysłany, dziękujemy!
Napisz komentarz
Przepisz znaki z obrazu do pola