DBAtlas · 数据库运维图谱

3819: ER_CHECK_CONSTRAINT_VIOLATED: Check constraint is violated(违反 CHECK 约束)

MySQL

含义

插入或更新的行违反了表上定义的 CHECK 约束。在 MySQL 8.0.16 及更高版本中,CHECK 约束会真正强制执行(早期版本会忽略它们)。

原因

列值不满足 CHECK 表达式中的条件(例如存在 CHECK (price >= 0) 时输入负价格)。从旧版 MySQL 升级到 8.0.16+ 后,由于以前被忽略的约束现在开始强制执行,可能会意外出现。

解决方法

确保值满足约束条件;在应用端添加校验。查看约束定义:SHOW CREATE TABLE my_table; 如果约束确实不需要:ALTER TABLE my_table DROP CHECK constraint_name; 或临时使用 ALTER TABLE my_table ALTER CHECK constraint_name NOT ENFORCED; 同时修复错误数据的来源。

在 DBAtlas 中打开 →

同一数据库的其他条目