Sepertinya Anda mencoba memasukkan string 'NULL'
ke dalam char(1)
bidang, bukan SQL NULL, dan Anda mengaktifkan mode SQL ketat, yang mencegahnya terpotong menjadi N
.
Jika Anda bisa, jalankan
SHOW CREATE TABLE <your_table_name>
di shell MySQL untuk menentukan apakah bidang target Anda menerima NULL. Tanpa konteks (apakah Anda menjalankan ini sebagai SQL murni, atau menghubungkan ke database dari beberapa program klien dalam bahasa lain?) sulit untuk memberikan solusi yang tepat, tetapi Anda mungkin memiliki sesuatu seperti ini:
INSERT <your_table_name>
SELECT first_name, 'NULL', last_name
di mana 'NULL' hanyalah sebuah string tanpa arti khusus, ketika yang Anda inginkan adalah
INSERT <your_table_name>
SELECT first_name, NULL, last_name
Berikut ilustrasinya:
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
Sedikit tendangan - maaf jika tidak ada gunanya ...