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 ...