configurando sql_mode global en mysql

Estoy tratando de establecer sql_mode en mysql pero arroja un error.

Mando:

set global sql_mode='NO_BACKSLASH_ESCAPES','STRICT_TRANS_TABLE','NO_AUTO_CREATE_USER','NO_ENGINE_SUBSTITUTION' 

¿No es esta la forma correcta de configurar múltiples modos? ¿Cuáles son las ventajas de establecer modos de sesión y globales? que es preffered? Tengo diferentes usuarios tratando de actualizar la base de datos con diferentes valores de UNC y con el deseo de establecer el modo de sesión en ‘NO_BACKSLASH_ESCAPES’, aunque creo que tendría sentido crear un modo gloabl para esto. ¿Esto tiene sentido?

Por favor hagamelo saber.

Gracias.

Por cierto, si configuras globales en MySQL:

 SET GLOBAL sql_mode = 'NO_ENGINE_SUBSTITUTION'; SET SESSION sql_mode = 'NO_ENGINE_SUBSTITUTION'; 

Esto no lo establecerá PERMANENTEMENTE , y se revertirá después de cada reinicio.

Por lo tanto, debe configurar esto en su archivo de configuración (por ejemplo, /etc/mysql/my.cnf en la sección [mysqld]), de modo que los cambios permanezcan vigentes después del reinicio de MySQL:

Archivo de configuración: /etc/mysql/my.cnf

 [mysqld] sql_mode = NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES 

ACTUALIZACIÓN: las versiones más recientes de Mysql (por ejemplo, 5.7.8 o superior) pueden requerir una syntax ligeramente diferente:

 [mysqld] sql-mode="STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION" 

Asegúrese de que haya un guión entre sql-mode no un guión bajo, y que los modos estén entre comillas dobles.

Siempre haga referencia a los documentos de MySQL para su versión para ver las opciones de modo sql .

Lo resolví

el modo correcto es:

 set global sql_mode="NO_BACKSLASH_ESCAPES,STRICT_TRANS_TABLE,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION" 

Configurando el modo sql permanentemente usando el archivo de configuración mysql.

En mi caso, tengo que cambiar el archivo /etc/mysql/mysql.conf.d/mysqld.cnf ya que mysql.conf.d está incluido en /etc/mysql/my.cnf . cambio esto bajo [mysqld]

 [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" 

acaba de eliminar el modo ONLY_FULL_GROUP_BY sql porque estaba causando un problema.

Estoy usando ubuntu 16.04 , php 7 y mysql –version dame este mysql Ver 14.14 Distrib 5.7.13, for Linux (x86_64) using EditLine wrapper

Después de este cambio, ejecuta los comandos debajo

 sudo service mysql stop sudo service mysql start 

Ahora comprueba los modos sql con esta consulta SELECT @@sql_mode y deberías obtener los modos que acabas de configurar.

Copiar al archivo de configuración: /etc/mysql/my.cnf OR /bin/mysql/my.ini

 [mysqld] port = 3306 sql-mode="" 

Reinicio de MySQL

O también puedes hacer

 [mysqld] port = 3306 SQL_MODE = "NO_AUTO_VALUE_ON_ZERO"; 

Reinicio de MySQL

En mi caso tengo que cambiar el archivo /etc/mysql/mysql.conf.d/mysqld.cnf cambiar esto en [ mysqld ]

Pegue esta línea en la porción [ 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" 
 establecer global sql_mode = "NO_BACKSLASH_ESCAPES, STRICT_TRANS_TABLE, NO_AUTO_CREATE_USER, NO_ENGINE_SUBSTITUTION"