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

¿Cómo permitir una cadena vacía para enteros en MySQL?

Hay 2 formas de hacer esto.

  1. Para la sesión actual de Mysql (solución temporal)

Primero ejecute la consulta para obtener el modo SQL actual de su servidor mysql.

    mysql> SELECT @@sql_mode;
    +----------------------------------------------------------------+
    | @@sql_mode                                                     |
    +----------------------------------------------------------------+
    |STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION  |
    +----------------------------------------------------------------+
    1 row in set (0.00 sec)

Si el resultado contiene STRICT_TRANS_TABLES , debe eliminar ese valor para permitir que la consulta de inserción pase el valor NULL. Asegúrese de que su usuario mysql tenga privilegios para aplicar estos cambios y reinicie el servidor Mysql después de aplicar esto.

    SET GLOBAL sql_mode = '';
  1. Para Life Time of Mysql (solución permanente)

Tienes que actualizar el archivo my.cnf. La ubicación de ese archivo es:\etc\my.cnf o \etc\mysql\mysql.cnf

Habrá algunos parámetros predeterminados establecidos en [mysqld] como

[mysqld]
innodb_file_per_table=1
default-storage-engine=MyISAM
performance-schema=0
max_allowed_packet=268435456
open_files_limit=10000

Solo agrega una línea debajo de eso

sql-mode=""

Asegúrese de reiniciar Mysql Server después de cambiar este archivo. Normalmente, el usuario raíz será el propietario del archivo, por lo que debe iniciar sesión con el usuario raíz en el servidor.

Para obtener más detalles y comprender qué hace este modo SQL.

STRICT_TRANS_TABLES

Habilite el modo SQL estricto para los motores de almacenamiento transaccional y, cuando sea posible, para los motores de almacenamiento no transaccional. Para obtener más información, consulte Modo SQL estricto.

Consulte:http://dev.mysql.com /doc/refman/5.7/en/sql-mode.html#sqlmode_strict_trans_tables

NO_AUTO_CREATE_USER

Evite que la declaración GRANT cree automáticamente nuevas cuentas de usuario si lo hiciera, a menos que se especifique información de autenticación. La declaración debe especificar una contraseña que no esté vacía usando IDENTIFICADO POR o un complemento de autenticación usando IDENTIFICADO CON.

Consulte:http://dev.mysql.com /doc/refman/5.7/en/sql-mode.html#sqlmode_no_auto_create_user

SIN_SUSTITUCIÓN_DE_MOTOR

Controle la sustitución automática del motor de almacenamiento predeterminado cuando una declaración como CREATE TABLE o ALTER TABLE especifica un motor de almacenamiento que está deshabilitado o no compilado.

Consulte:http://dev.mysql.com /doc/refman/5.7/en/sql-mode.html#sqlmode_no_engine_substitution