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

Inserindo null em char(1)


Parece que você está tentando inserir a string 'NULL' no char(1) campo, em vez de um SQL NULL, e você tem o modo SQL estrito ativado, o que impede que isso seja truncado para N .

Se você puder, corra
SHOW CREATE TABLE <your_table_name>

no shell do MySQL para determinar se seu campo de destino aceita NULLs. Sem contexto (você está executando isso como SQL puro ou se conectando ao banco de dados de algum programa cliente em outro idioma?) é difícil fornecer a solução exata, mas você pode ter algo assim:
INSERT <your_table_name>
SELECT first_name, 'NULL', last_name

onde 'NULL' é simplesmente uma string sem significado especial, quando o que você pretende é
INSERT <your_table_name>
SELECT first_name, NULL, last_name

Aqui está uma ilustração:
mysql> CREATE TABLE my_table ( middle_initial CHAR(1) NULL );
mysql> INSERT INTO my_table SELECT 'NULL';
mysql> SHOW WARNINGS;

Level       Code    Message
Warning     1265    Data truncated for column 'middle_initial' at row 1

mysql> SELECT * FROM my_table;

middle_initial
--------------
N

mysql> set sql_mode = 'STRICT_TRANS_TABLES';

mysql> INSERT INTO my_table SELECT 'NULL';

ERROR 1406 (22001) at line 16: Data too long for column 'middle_initial' at row 1

mysql> INSERT INTO my_table SELECT NULL;
mysql> SELECT * FROM my_table;

middle_initial
--------------
N
NULL

Pouco de um punt - desculpas se não usar ...