繁体   English   中英

MySQL中的非空列和完整性检查

[英]Not null column in MySQL and integrity check

在MySQL 5.1.48数据库中,我有一个带有NOT NULL列'name'的表。 当我将列的值更新为NULL ,将报告带有黄色感叹号的错误(使用MySQL查询浏览器)并更新行(!)。 然后该行包含空字符串,它不显示灰色NULL指示符。

这是给定MySQL版本中的错误吗? 或者我可以神奇地打开约束检查?

MySQL有多种SQL模式 ,其行为可能令人惊讶。 在您设置的模式中,它看不到空,因此它提供默认值。

将“TRADITIONAL”添加到SQL模式将导致它按预期中止更新。 如果你希望它能够正常运行,你可能也会对ANSI_QUOTES和STRICT_ALL_TABLES感兴趣,但是如果你做得太严格,很多代码编写MySQL后端的代码都会失败。

从引用 - 如果您没有使用严格模式,那么无论何时向列中插入“不正确”值,例如将NULL插入NOT NULL列或将过大的数值插入数字列,MySQL都会设置列达到“最佳可能值”而不是产生错误。 ...对于字符串,MySQL存储空字符串或尽可能多的字符串存储在列中

对无效数据的约束

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM