Při migraci webové stránky klienta z jednoho WHM/cPanel na jiný WHM/cPanel se mi zobrazila chyba SQL „Nekompatibilní s sql_mode=only_full_group_by “. Níže je kompletní chybová zpráva.
SELECT list is not in GROUP BY clause and contains nonaggregated column 'dbname.p.picfile' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by
Řešení: MySQL 5.7.5+ se změnilo GROUP BY
chování, aby bylo v souladu s SQL99 (starší verze nebyly) a to byl důvod chyby.
Řešením je upravit své konfigurace MySQL a odstranit ONLY_FULL_GROUP_BY
možnost z sql_mode
. Tím se změní GROUP BY
chování zpět na chování před MySQL 5.7.5.
Pokud jste na sdíleném hostingu, nebudete moci změnit sql_mode
na úrovni životního prostředí.
Odebrat ONLY_FULL_GROUP_BY
v my.cnf
soubor
Pokud máte přístup ke konfiguračnímu souboru MySQL my.cnf
, otevřete soubor:
# vim /etc/mysql/my.cnf
a na konec souboru přidejte následující řádek:
[mysqld]
sql_mode = "STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"
Restartujte službu MySQL:
# systemctrl restart mysqlZakázat ONLY_FULL_GROUP BY
Tím zakážete ONLY_FULL_GROUP_BY pro VŠECHNY uživatele systému.
Odebrat ONLY_FULL_GROUP_BY
ve WHM/cPanel
Pokud je vaše doména na cPanel (sdílený hosting), musíte kontaktovat svého poskytovatele hostingu, aby jej aktualizoval.
Pokud máte přístup k WHM, přejděte na PHPMyAdmin
pod SQL Services
z WHM, jak je uvedeno níže:
Klikněte na Variables
z nabídky a vyhledejte SQL_MODE
Klikněte na tlačítko Upravit a změňte odstranění ONLY_FULL_GROUP_BY
. Po úpravě klikněte na save
.
To je ono!