Si su aplicación se escribió para versiones anteriores de MySQL y no es compatible con el modo SQL estricto en MySQL 5.7, puede desactivar el modo SQL estricto. Por ejemplo, aplicaciones como WHMCS 6 y Craft 2 no admiten el modo SQL estricto.
Si usa WHMCS 7, consulte nuestro artículo sobre cómo personalizar MySQL para WHMCS 7.Para deshabilitar el modo SQL estricto, SSH en su servidor como root y crea un nuevo archivo de configuración usando nano o el editor de su elección:
sudo nano /etc/mysql/conf.d/disable_strict_mode.cnf
En el archivo, ingrese estas dos líneas:
[mysqld] sql_mode=IGNORE_SPACE,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
Guarde el archivo presionando CTRL + X , luego y , luego ENTRAR para confirmar los cambios.
Finalmente, reinicie MySQL con este comando:
sudo service mysql restart
Este cambio deshabilita dos configuraciones de modo SQL, STRICT_TRANS_TABLES y ONLY_FULL_GROUP_BY, que se agregaron en MySQL 5.7 y causan problemas para algunas aplicaciones más antiguas.
Confirmar que el modo SQL estricto está deshabilitado
Puede confirmar que el modo SQL estricto está deshabilitado ejecutando este comando como root :
sudo mysql -i -BN -e 'SELECT @@sql_mode' | grep -E 'ONLY_FULL_GROUP_BY|STRICT_TRANS_TABLES'
Si el modo estricto está deshabilitado, no verá ningún resultado de ese comando.
Si deshabilitar el modo estricto le causa algún problema, puede volver a habilitarlo eliminando ese archivo y reiniciando MySQL nuevamente.
Cómo se ven los errores del modo SQL estricto
Si su aplicación no es compatible con el modo SQL estricto, a menudo verá errores de SQL como:
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