Il semble que vous essayez peut-être d'insérer la chaîne 'NULL'
dans le champ char(1)
, plutôt que d'un NULL SQL, et vous avez le strict mode SQL activé, ce qui empêche celle-ci étant tronquée à N
.
Si vous êtes en mesure, exécutez
SHOW CREATE TABLE <your_table_name>
dans le shell MySQL pour déterminer si votre champ cible accepte les valeurs NULL. Sans contexte (vous exécutez ce SQL comme pur, ou la connexion à la base de données de certains programme client dans un autre langauge?), 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, alors que ce que vous avez l'intention 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
Bit d'un botté de dégagement - excuses si aucune utilisation ...
Suis-je le seul confus quant à la raison pour laquelle il est marqué "nouveau"? – Gabe
Non, je suis confus aussi :) – jrharshath
n'est pas plus nouveau comme, "newbie"? hahaha – Philip