文字列'NULL'
を挿入しようとしているようです char(1)
に SQL NULLではなくフィールドであり、厳密なSQLモードが有効になっているため、これがN
に切り捨てられるのを防ぎます。 。
可能であれば、実行します
SHOW CREATE TABLE <your_table_name>
MySQLシェルで、ターゲットフィールドがNULLを受け入れるかどうかを判断します。コンテキストがない場合(これを純粋なSQLとして実行しているのか、それとも別の言語のクライアントプログラムからデータベースに接続しているのか)、正確なソリューションを提供することは困難ですが、次のようなものがあります。
INSERT <your_table_name>
SELECT first_name, 'NULL', last_name
ここで、「NULL」は、意図するものが意図されている場合、特別な意味を持たない単なる文字列です
INSERT <your_table_name>
SELECT first_name, NULL, last_name
これがイラストです:
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
ちょっとしたパント-役に立たなかったらお詫びします...