Om din app är skriven för äldre versioner av MySQL och inte är kompatibel med strikt SQL-läge i MySQL 5.7, kan du inaktivera strikt SQL-läge. Till exempel, appar som WHMCS 6 och Craft 2 stöder inte strikt SQL-läge.
Om du använder WHMCS 7, se vår artikel om att anpassa MySQL för WHMCS 7.För att inaktivera strikt SQL-läge, SSH in på din server som root och skapa en ny konfigurationsfil med nano eller valfri redaktör:
sudo nano /etc/mysql/conf.d/disable_strict_mode.cnf
Ange dessa två rader i filen:
[mysqld] sql_mode=IGNORE_SPACE,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
Spara filen genom att trycka på CTRL + X , sedan y , sedan ENTER för att bekräfta ändringar.
Slutligen, starta om MySQL med detta kommando:
sudo service mysql restart
Denna ändring inaktiverar två SQL-lägesinställningar, STRICT_TRANS_TABLES och ONLY_FULL_GROUP_BY, som lades till i MySQL 5.7 och orsakar problem för vissa äldre applikationer.
Bekräfta att strikt SQL-läge är inaktiverat
Du kan bekräfta att strikt SQL-läge är inaktiverat genom att köra det här kommandot som root :
sudo mysql -i -BN -e 'SELECT @@sql_mode' | grep -E 'ONLY_FULL_GROUP_BY|STRICT_TRANS_TABLES'
Om strikt läge är inaktiverat kommer du inte att se någon utdata från det kommandot.
Om inaktivering av strikt läge orsakar problem för dig kan du återaktivera det genom att ta bort den filen och starta om MySQL igen.
Hur ser strikta SQL-lägesfel ut
Om din app inte är kompatibel med strikt SQL-läge kommer du ofta att se SQL-fel som:
SQLSTATE[42000]: Syntax error or access violation: 1055 Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'yourdbname.tblannouncements.date' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by