Rumah >pangkalan data >tutorial mysql >Mengapa MySQL Throw Ralat 1364: 'Bidang Tidak Mempunyai Nilai Lalai'?
Apabila cuba memasukkan data ke dalam jadual tanpa menyatakan nilai secara eksplisit untuk lajur tidak boleh dibatalkan yang kekurangan nilai lalai, MySQL mungkin membuang ralat yang menyatakan "Field doesn't have a default value" (Ralat No. 1364).
Seorang pengguna telah menghadapi ralat ini apabila memasukkan ke dalam jadual dengan skema berikut:
CREATE TABLE try ( name VARCHAR(8), CREATED_BY VARCHAR(40) NOT NULL );
Pencetus telah dicipta untuk mengisi secara automatik CREATED_BY medan dengan nama pengguna:
CREATE TRIGGER autoPopulateAtInsert BEFORE INSERT ON try FOR EACH ROW SET NEW.CREATED_BY = USER();
Walau bagaimanapun, cuba memasukkan baris menggunakan pertanyaan berikut:
INSERT INTO try (name) VALUES ('abc');
masih menghasilkan mesej ralat.
Mesej ralat adalah hasil daripada mod SQL STRICT_TRANS_TABLES yang ditetapkan dalam Fail konfigurasi MySQL (my.ini atau serupa). Mod ini menguatkuasakan peraturan ketat mengenai nilai lalai untuk lajur yang tidak boleh dibatalkan. Untuk menyelesaikan isu tersebut, pengguna hendaklah:
Sebagai alternatif, pengguna boleh mencipta nilai lalai untuk Medan CREATED_BY menggunakan pernyataan ALTER TABLE. Walau bagaimanapun, pendekatan ini mungkin tidak sesuai jika pencetus bertujuan untuk menetapkan nilai secara dinamik.
Atas ialah kandungan terperinci Mengapa MySQL Throw Ralat 1364: 'Bidang Tidak Mempunyai Nilai Lalai'?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!