在 MySQL 5.1.48 数据库中,我有一个带有 NOT NULL 列“名称”的表。当我将列的值更新为 时NULL
,会报告带有黄色感叹号的错误(使用 MySQL 查询浏览器)并更新行(!)。然后该行包含空字符串,它不显示灰色 NULL 指示符。
这是给定 MySQL 版本中的错误吗?或者我可以神奇地打开约束检查吗?
来自参考 -如果您没有使用严格模式,那么每当您将“不正确”的值插入到列中时,例如将 NULL 插入 NOT NULL 列或将过大的数值插入到数字列中,MySQL 都会设置该列到“最佳可能值”而不是产生错误。...对于字符串,MySQL 存储空字符串或尽可能多的字符串存储在列中
MySQL 有多种SQL 模式,其行为可能令人惊讶。在您设置的模式下,它看到的不是 null,因此它提供了一个默认值。
将“TRADITIONAL”添加到您的 SQL 模式将导致它按照您的预期中止更新。如果您希望 ANSI_QUOTES 和 STRICT_ALL_TABLES 正常运行,您可能也对它感兴趣,但是如果您将事情过于严格,那么针对 MySQL 后端编写的大量代码将会失败。