[英]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.