首頁  >  文章  >  資料庫  >  為什麼我在 MySQL 嚴格模式下收到「欄位沒有預設值」錯誤?

為什麼我在 MySQL 嚴格模式下收到「欄位沒有預設值」錯誤?

Susan Sarandon
Susan Sarandon原創
2024-11-05 12:40:02854瀏覽

Why am I getting the

MySQL STRICT 模式錯誤:1364 '欄位沒有預設值'

在最近從MAMP 遷移到Apache、MySQL 和PHP 時,執行INSERT 指令突然導致下列錯誤:

SQLSTATE[HY000]: General error: 1364 Field 'display_name' doesn't have a default value

此問題是由於MySQL 預設行為的變更而引起的。在 MySQL 版本 5.6.13 中,經常啟用 STRICT 模式,這會強制執行更嚴格的資料驗證規則。因此,沒有預設值的欄位在插入時不能再留空。

解決方案

要解決此問題,需要變更 MySQL STRICT 模式設定。有兩種可能的解決方案:

  1. 臨時更改:在MySQL 控制台中執行以下命令:

    SET GLOBAL sql_mode='';

    這將暫時停用STRICT所有後續查詢的模式。

  2. 永久變更:編輯您的 MySQL 設定檔 (my.cnf)。找到 sql_mode 設定並驗證 STRICT_ALL_TABLES 或任何其他嚴格模式選項不存在。如果找到,請註解掉或刪除這些選項。

進行上述任一更改後,重新啟動 MySQL 伺服器,INSERT 命令應該成功執行,並且不會出現「欄位沒有預設值」錯誤.

以上是為什麼我在 MySQL 嚴格模式下收到「欄位沒有預設值」錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn