Apabila cuba memasukkan data ke dalam jadual MySQL di mana panjang data lajur melebihi lebar yang ditentukan, anda Akan menemui "Kod Ralat: 1406. Data terlalu panjang untuk lajur" ralat.
Pertimbangkan contoh ini:
CREATE TABLE `TEST` ( `idTEST` INT NOT NULL , `TESTcol` VARCHAR(45) NULL , PRIMARY KEY (`idTEST`) );
Memasukkan data dalam panjang lajur yang ditentukan berfungsi seperti yang diharapkan:
INSERT INTO TEST VALUES ( 1, 'Vikas' );
Walau bagaimanapun, cuba memasukkan data yang melebihi panjang lajur maksimum mengakibatkan ralat:
INSERT INTO TEST VALUES ( 2, 'Vikas Kumar Gupta Kratika Shukla Kritika Shukla' );
Ini berlaku kerana MySQL memotong sebarang nilai sisipan yang lebih panjang daripada lebar lajur yang ditentukan.
Penyelesaian:
Untuk menyelesaikan isu ini, lumpuhkan mod ketat MySQL buat sementara waktu:
Dalam my my Fail .ini (Windows) atau my.cnf (Unix):
Edit Tetapan "sql-mode" untuk mengalih keluar "STRICT_TRANS_TABLES":
# Set the SQL mode to strict sql-mode="NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"
Menggunakan pertanyaan SQL dalam alat pengurusan pangkalan data:
Laksanakan pertanyaan berikut untuk menetapkan mod SQL global untuk mengosongkan:
SET @@global.sql_mode= '';
Dengan mod ketat dilumpuhkan, anda boleh memasukkan data yang melebihi panjang lajur. Walau bagaimanapun, berhati-hati kerana ini boleh menyebabkan pemangkasan data dan ketidakkonsistenan, jadi gunakan penyelesaian ini dengan bijak.
Atas ialah kandungan terperinci Bagaimana untuk Menyelesaikan Ralat MySQL 1406: Data Terlalu Panjang untuk Lajur?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!