MySQL Workbench添加CHECK约束报Error Code:3819问题求助
问题解决方案
报错根因
3819错误与字段名称、写法大小写无关,本质是supplier表中已经存在supplier_size字段值小于15的记录。MySQL添加CHECK约束时会默认校验全表所有历史数据,只要存在不符合约束规则的记录,就会触发该报错。
处理步骤
- 先查询所有不符合约束的历史记录:
SELECT * FROM supplier WHERE supplier_size < 15;
- 结合业务需求选择对应方案:
- 方案一:清理不合规记录,要么将这些记录的
supplier_size更新为大于等于15的值,要么直接删除不合规记录,清理完成后再执行添加约束的语句即可成功。 - 方案二:如果必须保留不合规的历史记录,仅要求后续新增/更新的数据满足
supplier_size >=15规则,MySQL原生不支持跳过历史数据校验CHECK约束,你可以改用触发器实现新增、更新操作的字段校验,或者调整约束规则兼容历史数据。
内容的提问来源于stack exchange,提问作者Modo
相关产品推荐
相关产品推荐

