查询MySQL批量插入时导致插入失败的错误代码列表
MySQL批量插入失败的错误代码区分方法
MySQL并没有官方发布专门针对批量插入场景、明确分类为“导致行插入失败”的错误代码列表,但可以根据错误代码的实际行为和MySQL的约束规则,区分出哪些警告级别的错误会导致对应行插入失败,哪些只是数据调整但行仍成功插入。
常见导致行插入失败的错误代码(即使级别为Warning,该行也不会被插入)
1452:外键约束冲突,关联的父表不存在对应记录,该行数据完全无法插入1062:主键或唯一键重复,违反唯一性约束,该行插入失败1451:尝试插入的行违反了关联表的删除/更新约束(批量插入场景较少见,多出现于更新/删除操作)1364:必填字段未提供值且无默认值,在非严格模式下可能标记为Warning,但该行不会被插入
仅为警告但行仍成功插入的错误代码(数据被调整但行已写入)
1265:数据截断,字段值超出长度限制被截断,行正常插入1366:字符串值不符合字段字符集要求,值被替换为默认值或空值后行插入成功1264:数值超出字段范围,被自动调整为字段允许的极值后行插入成功
额外判断建议
- 结合sql_mode分析:MySQL的
sql_mode会影响错误的级别和行为,比如开启STRICT_ALL_TABLES时,部分原本为Warning的错误会转为Error;但你已配置遇错继续,需注意不同模式下错误对应的实际插入结果。 - 统计验证:可以在批量插入前后统计目标表的行数,结合捕获到的错误行号,验证哪些行实际未被插入,以此反向确认错误代码的行为。
内容的提问来源于stack exchange,提问作者snappymcsnap
相关产品推荐
相关产品推荐

