off - desactivar modo estricto mysql
Cómo deshacerse del modo STRICT SQL en MySQL (8)
Este es un seguimiento de esta pregunta MYSQL formato incorrecto DATETIME
¿Cómo deshacerse de STRICT_TRANS_TABLES de una vez por todas?
mysql --help
informa las siguientes configuraciones:
Default options are read from the following files in the given order:
/etc/my.cnf /etc/mysql/my.cnf /usr/local/etc/my.cnf ~/.my.cnf
$ ls /etc/my.cnf /etc/mysql/my.cnf /usr/local/etc/my.cnf ~/.my.cnf
ls: /Users/pain/.my.cnf: No such file or directory
ls: /etc/mysql/my.cnf: No such file or directory
ls: /usr/local/etc/my.cnf: No such file or directory
/etc/my.cnf
$ cat /etc/my.cnf
[mysqld]
sql_mode=NO_ENGINE_SUBSTITUTION
Pero esto no ayuda. Tengo un código heredado y cada vez que reinicio la computadora tengo que iniciar mysql y cambiar sql_mode.
Actualizar
Así que abandoné MySQL instalado en Homebrew y lo descargué de mysql.com. Pero eso tampoco ayudó. Siguiendo las respuestas aquí: ¿Cómo arreglar `variable desconocida ''sql-mode = ANSI''`? He probado diferentes variaciones de /etc/my.cnf
: [mysql]
, [mysqld]
, sql_mode
, sql-mode
- nada ayudó.
Ahora no puede configurar sql_mode en una cadena vacía, la consulta real es:
SET @@GLOBAL.sql_mode="STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"
MySQL 5.7.16
Así que al final eliminé el servidor MySQL que obtuve de mysql.com, lo reinstalé a través de Homebrew y tuve que editar
/usr/local/Cellar/mysql/5.6.xx/my.cnf
Donde podría comentar el STRICT_TRANS_TABLES
.
Sin embargo, esto no explica por qué la configuración predeterminada anula la de /etc/my.cnf
, pero ya pasé demasiado tiempo en esto como está. Y, por cierto, todavía no estoy seguro de qué hacer con la distribución provista por mysql.com.
De acuerdo con el modo estricto de MySQL en OS X, la configuración problemática está realmente en /usr/local/mysql/my.cnf
y se puede comentar para detener este comportamiento.
Debe buscar tanto en modo sql como en sql_mode, en caso de que exista una configuración. http://it.i88.ca/2014/03/how-to-get-rid-of-strict-sql-mode-in.html
En Centos 6.5 tuve que editar /usr/my.cnf
y establecer (aunque existía /etc/my.cnf
y los enlaces se establecieron correctamente allí)
[mysqld]
sql_mode=NO_ENGINE_SUBSTITUTION
el paquete era de
mysql-community-client.x86_64 5.6.16-1.el6 @mysql56-community
En Mac OS X El Capitán, creé un archivo .my.cnf en el directorio de inicio del usuario, establecí las configuraciones para mysql en [mysqld]
y luego reinicié mysql. Funcionó bien!
Este problema también me afectó por un tiempo. Ninguna de las respuestas abordó el problema original hasta ahora, pero creo que la mía sí, así que lo publicaré en caso de que ayude a alguien más.
Tengo MySQL (de mysql.com) Community Edition 5.7.10 instalado en OS X 10.10.3
Al final creé un /etc/mysql/my.cnf
con los siguientes contenidos:
[mysqld]
sql_mode=NO_ENGINE_SUBSTITUTION
Después de reiniciar el servidor a SHOW VARIABLES LIKE ''sql_mode'';
me dio:-
+---------------+------------------------+
| Variable_name | Value |
+---------------+------------------------+
| sql_mode | NO_ENGINE_SUBSTITUTION |
+---------------+------------------------+
1 row in set (0.00 sec)
Por último, no hay modo estricto!
Probé todas las respuestas que pude encontrar sobre este problema utilizando MySQL 5.7 en Mac OS 10.12 y, en última instancia, desactivé el modo estricto no debido a la ubicación de my.cnf, que presumiblemente puede estar en cualquiera de los lugares que MySQL dice que verifica, pero Gracias a un problema de permisos UNIX.
Usé MySQL Workbench 6.2.3.12313 para crear my.cnf inicialmente. Esto causó dos problemas posibles: primero, configuró la opción a "modo-sql" en lugar de "modo_lq", y convirtió el archivo (ubicado en / etc) en legible y escribible solo para la raíz. MySQL no se ejecuta como root cuando lo instala como lo hice desde el paquete binario en el sitio web de MySQL, se ejecuta como _mysql. Entonces el usuario _mysql necesita poder leer /etc/my.cnf, o donde sea que lo coloques. Para que eso funcione, necesitas ejecutar:
sudo chmod o+r /etc/my.cnf
y por si acaso puedes correr también:
sudo chmod g+r /etc/my.cnf
Entonces asegúrese de reiniciar MySQL. (Descubrí que esto funciona mejor a través del Panel de Preferencias del Sistema MySQL en Mac OS; el uso de la línea de comandos es un poco desordenado y la funcionalidad de MySQL Workbench simplemente no funciona). Siempre que tenga una configuración sql_mode en my.cnf, no implica el modo estricto, el modo estricto debe estar desactivado.