首頁 > 資料庫 > mysql教程 > 為什麼 MySQL 會拋出錯誤 1364:「欄位沒有預設值」?

為什麼 MySQL 會拋出錯誤 1364:「欄位沒有預設值」?

Patricia Arquette
發布: 2024-12-24 02:59:14
原創
684 人瀏覽過

Why Does MySQL Throw Error 1364:

MySQL 錯誤1364:欄位沒有預設值

嘗試將資料插入表中而未明確指定缺少的不可空列的值如果沒有預設值, MySQL 可能會拋出一個錯誤,指出「欄位沒有預設值」(錯誤編號: 1364).

問題描述

使用者在插入具有以下架構的表時遇到此錯誤:

CREATE TABLE try (
  name VARCHAR(8),
  CREATED_BY VARCHAR(40) NOT NULL
);
登入後複製

建立了一個觸發器來自動填入CREATED_BY欄位的使用者名稱:

CREATE TRIGGER autoPopulateAtInsert
BEFORE INSERT ON try
FOR EACH ROW
SET NEW.CREATED_BY = USER();
登入後複製

但是,嘗試使用以下查詢:

INSERT INTO try (name) VALUES ('abc');
登入後複製

仍然會出現錯誤訊息。

解決方案

錯誤訊息是在 MySQL 設定檔中設定 STRICT_TRANS_TABLES SQL 模式的結果(my.ini 或類似檔案)。此模式強制執行有關不可為空列的預設值的嚴格規則。要解決此問題,使用者應該:

  1. 開啟 MySQL 設定檔。
  2. 找到 STRICT_TRANS_TABLES 設定並刪除或停用它。
  3. 重新啟動 MySQL 服務.

或者,使用者可以為使用 ALTER TABLE 語句的 CREATED_BY 欄位。但是,如果觸發器旨在動態設定值,則此方法可能不合適。

以上是為什麼 MySQL 會拋出錯誤 1364:「欄位沒有預設值」?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板