簡體   English   中英

MySQL 枚舉總是包含 ''(空字符串)的可能性

[英]MySQL Enum's always contain '' (empty string) in possibilities

我正在嘗試使用 PhpMyAdmin 在 MySQL 中創建一個簡單的 'yes'/'maybe'/'no' Enum 我將 NULL 設置為 No,並將 'maybe' 作為默認值

在執行諸如“SET EnumCol=''”之類的內容時,我預計會出現錯誤,因為 ''(空字符串)不應是有效值。 但是查詢被執行並且值被設置為 '' - 這意味着每當我從數據庫中讀取時,我都被迫仔細檢查這個不需要的和非法的值!

這是 MySQL 或 PhpMyAdmin 中的錯誤嗎? 有誰知道禁用這種行為的方法?

謝謝。

空字符串是ENUM中無效值的錯誤指示符。 從 mysql ENUM類型手冊

如果在 ENUM 中插入無效值(即允許值列表中不存在的字符串),則會插入空字符串作為特殊錯誤值。 該字符串的數值為 0,可以將此字符串與“普通”空字符串區分開來。稍后將詳細介紹。

要禁用此行為:

如果啟用了嚴格 SQL 模式,則嘗試插入無效的 ENUM 值會導致錯誤。

要啟用嚴格模式,請參閱服務器 SQL 模式

ENUM 令人頭疼。 除非您還需要通過數字設置值,否則我會遠離它們。

相反,使用帶有查找表外鍵的 varchar 列來限制值。 這將使插入錯誤值變得不可能。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM