sql_mode pipes_as_concat permanently no_zero_date no_engine_substitution no_auto_create_user error_for_division_by_zero disable create change mysql

pipes_as_concat - sql mode mysql



configurando sql_mode global en mysql (6)

Estoy intentando configurar sql_mode en mysql pero produce 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 configurar modos de sesión y globales? cual es el preferido Tengo diferentes usuarios que intentan actualizar la base de datos con diferentes valores UNC e instalé la configuración del modo de sesión en ''NO_BACKSLASH_ESCAPES'', aunque creo que tendría sentido para este un modo global. ¿Esto tiene sentido?

Por favor hagamelo saber.

Gracias.


Configuración del modo sql permanentemente utilizando 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 ONLY_FULL_GROUP_BY modo sql porque estaba causando problemas.

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, ejecute los siguientes comandos

sudo service mysql stop sudo service mysql start

Ahora verifique los modos de SQL mediante esta consulta SELECT @@sql_mode y debería obtener los modos que acaba de establecer.


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

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

MySQL reinicio.

O tambien puedes hacer

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

MySQL reinicio.


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

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


Lo resolví.

el modo correcto es:

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


Por cierto, si configura globales en MySQL:

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

Esto no lo configurará de forma PERMANENTE y se revertirá después de cada reinicio.

Así que debes configurar esto en tu archivo de configuración (por ejemplo, /etc/mysql/my.cnf en la sección [mysqld]), para que los cambios sigan 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 sintaxis 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 MySQL de su versión para ver las opciones de modo SQL .


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