While migrating a client website from one WHM/cPanel to another WHM/cPanel, I got an SQL error “Incompatible with sql_mode=only_full_group_by“. Below is the complete error message.
Solution: MySQL 5.7.5+ has changed GROUP BY behavior to be SQL99 compliant (Older versions were not) and that was the reason for the error.
The workaround is to edit your MySQL configurations to remove ONLY_FULL_GROUP_BY option from sql_mode. This will change GROUP BY behavior back to its pre-MySQL 5.7.5 behavior.
Remove ONLY_FULL_GROUP_BY in my.cnf file
If you have access to MySQL configuration file my.cnf, open the file:
and add the below line to the end of the file:
Restart the MySQL service:
Code:
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
Solution: MySQL 5.7.5+ has changed GROUP BY behavior to be SQL99 compliant (Older versions were not) and that was the reason for the error.
The workaround is to edit your MySQL configurations to remove ONLY_FULL_GROUP_BY option from sql_mode. This will change GROUP BY behavior back to its pre-MySQL 5.7.5 behavior.
Remove ONLY_FULL_GROUP_BY in my.cnf file
If you have access to MySQL configuration file my.cnf, open the file:
Code:
# vim /etc/mysql/my.cnf
and add the below line to the end of the file:
Code:
[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"
Restart the MySQL service:
Code:
# systemctl restart mysql
Comment