Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Como permitir string vazia para inteiro no MySQL?


Existem 2 maneiras de fazer isso.
  1. Para a sessão atual do Mysql (solução temporária)

Primeiro execute a consulta para obter o modo SQL atual do seu 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)

Se o resultado contiver STRICT_TRANS_TABLES , você deve remover esse valor para permitir que a consulta de inserção passe o valor NULL. Certifique-se de que seu usuário mysql tenha privilégios para aplicar essas alterações e reinicie o Mysql Server após aplicar isso.
    SET GLOBAL sql_mode = '';
  1. Por toda a vida útil do Mysql (solução permanente)

Você precisa atualizar o arquivo my.cnf. A localização desse arquivo é:\etc\my.cnf ou \etc\mysql\mysql.cnf

Haverá alguns parâmetros padrão definidos em [mysqld] como
[mysqld]
innodb_file_per_table=1
default-storage-engine=MyISAM
performance-schema=0
max_allowed_packet=268435456
open_files_limit=10000

Basta adicionar uma linha abaixo disso
sql-mode=""

Certifique-se de reiniciar o Mysql Server depois de alterar este arquivo. Normalmente, o usuário root será o proprietário do arquivo, então você deve fazer o login com o usuário root no servidor.

Para obter mais detalhes para entender o que esse modo SQL faz.

STRICT_TRANS_TABLES

Ative o modo SQL estrito para mecanismos de armazenamento transacionais e, quando possível, para mecanismos de armazenamento não transacionais. Para obter detalhes, consulte Modo SQL estrito.

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

NO_AUTO_CREATE_USER

Impedir que a instrução GRANT crie automaticamente novas contas de usuário se isso ocorrer de outra forma, a menos que as informações de autenticação sejam especificadas. A instrução deve especificar uma senha não vazia usando IDENTIFIED BY ou um plug-in de autenticação usando IDENTIFIED WITH.

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

NO_ENGINE_SUBSTITUTION

Controle a substituição automática do mecanismo de armazenamento padrão quando uma instrução como CREATE TABLE ou ALTER TABLE especifica um mecanismo de armazenamento que está desabilitado ou não compilado.

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