Il semble que vous tentiez d'insérer la chaîne 'NULL'
dans le char(1)
champ, plutôt qu'un SQL NULL, et vous avez activé le mode SQL strict, ce qui empêche qu'il soit tronqué à N
.
Si vous le pouvez, courez
SHOW CREATE TABLE <your_table_name>
dans le shell MySQL pour déterminer si votre champ cible accepte les valeurs NULL. Sans contexte (exécutez-vous ceci en tant que SQL pur ou vous connectez-vous à la base de données à partir d'un programme client dans un autre langage ?), Il est difficile de fournir la solution exacte, mais vous pouvez avoir quelque chose comme ceci :
INSERT <your_table_name>
SELECT first_name, 'NULL', last_name
où 'NULL' est simplement une chaîne sans signification particulière, quand ce que vous voulez est
INSERT <your_table_name>
SELECT first_name, NULL, last_name
Voici une illustration :
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 peu un botté de dégagement - excuses si pas d'utilisation ...