Det låter som att du försöker infoga strängen 'NULL'
till char(1)
fält, snarare än en SQL NULL, och du har strikt SQL-läge aktiverat, vilket förhindrar att detta trunkeras till N
.
Om du kan, kör
SHOW CREATE TABLE <your_table_name>
i MySQL-skalet för att avgöra om ditt målfält accepterar NULL. Utan kontext (kör du detta som ren SQL, eller ansluter du till databasen från något klientprogram på ett annat språk?) är det svårt att tillhandahålla den exakta lösningen, men du kan ha något sånt här:
INSERT <your_table_name>
SELECT first_name, 'NULL', last_name
där 'NULL' helt enkelt är en sträng utan någon speciell betydelse, när det du avser är
INSERT <your_table_name>
SELECT first_name, NULL, last_name
Här är en 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
Lite av en poäng - ursäkta om ingen nytta ...