sql >> Base de Datos >  >> RDS >> Mysql

Cómo deshabilitar el modo SQL estricto en MySQL 5.7

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