Rumah >pangkalan data >tutorial mysql >Mengapa MySQL Throw Ralat 1364: 'Bidang Tidak Mempunyai Nilai Lalai'?

Mengapa MySQL Throw Ralat 1364: 'Bidang Tidak Mempunyai Nilai Lalai'?

Patricia Arquette
Patricia Arquetteasal
2024-12-24 02:59:14688semak imbas

Why Does MySQL Throw Error 1364:

Ralat MySQL 1364: Medan 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).

Perihalan Masalah

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.

Penyelesaian

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:

  1. Buka fail konfigurasi MySQL.
  2. Cari tetapan STRICT_TRANS_TABLES dan alih keluar atau lumpuhkannya.
  3. Mulakan semula perkhidmatan MySQL .

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn