Durante la migrazione di un sito Web client da un WHM/cPanel a un altro WHM/cPanel, ho ricevuto un errore SQL "Incompatibile con sql_mode=only_full_group_by “. Di seguito è riportato il messaggio di errore completo.
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
Soluzione: MySQL 5.7.5+ ha cambiato GROUP BY
comportamento conforme a SQL99 (le versioni precedenti non lo erano) e questo era il motivo dell'errore.
La soluzione alternativa è modificare le tue configurazioni MySQL per rimuovere ONLY_FULL_GROUP_BY
opzione da sql_mode
. Questo cambierà GROUP BY
comportamento al suo comportamento precedente a MySQL 5.7.5.
Se sei su un hosting condiviso, non sarai in grado di modificare sql_mode
a livello ambientale.
Rimuovi ONLY_FULL_GROUP_BY
in my.cnf
file
Se hai accesso al file di configurazione MySQL my.cnf
, apri il file:
# vim /etc/mysql/my.cnf
e aggiungi la riga sottostante alla fine del file:
[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"
Riavvia il servizio MySQL:
# systemctrl restart mysqlDisattiva ONLY_FULL_GROUP BY
Questo disabiliterà ONLY_FULL_GROUP_BY per TUTTI gli utenti del sistema.
Rimuovi ONLY_FULL_GROUP_BY
in WHM/cPanel
Se il tuo dominio è su un cPanel (Hosting condiviso), devi contattare il tuo provider di hosting per aggiornarlo.
Se hai accesso a WHM, accedi a PHPMyAdmin
in SQL Services
da WHM come mostrato di seguito:
Fare clic su Variables
dal menu e cerca SQL_MODE
Fai clic sul pulsante Modifica e cambia rimuovi ONLY_FULL_GROUP_BY
. Una volta modificato, fai clic su save
.
Ecco fatto!