Sembra che tu stia tentando di inserire la stringa 'NULL'
nel char(1)
campo, anziché un NULL SQL, e hai abilitato la modalità SQL rigorosa, che impedisce che venga troncato a N
.
Se puoi, corri
SHOW CREATE TABLE <your_table_name>
nella shell MySQL per determinare se il campo di destinazione accetta NULL. Senza contesto (lo stai eseguendo come puro SQL o ti connetti al database da qualche programma client in un'altra lingua?) è difficile fornire la soluzione esatta, ma potresti avere qualcosa del genere:
INSERT <your_table_name>
SELECT first_name, 'NULL', last_name
dove 'NULL' è semplicemente una stringa senza un significato speciale, quando quello che intendi è
INSERT <your_table_name>
SELECT first_name, NULL, last_name
Ecco un'illustrazione:
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
Un po' una sciocchezza - mi scuso se non serve ...