MySQL Error number: MY-012793; Symbol: ER_IB_MSG_968; SQLSTATE: HY000

文档解释

Error number: MY-012793; Symbol: ER_IB_MSG_968; SQLSTATE: HY000

Message: %s

错误说明

MY-012793; ER_IB_MSG_968; HY000 错误号码是MySQL服务器响应执行语句时遇到的一个Innodb存储引擎相关的错误,指出服务器无法下判断出记录的唯一索引。 这是来自于可能的字段值的非唯一冲突的结果或者字段索引的一部分或全部是空值。

常见案例

收到此错误的情况,可能是对有唯一索引的表执行INSERT或者UPDATE语句时,出现的情况,MySQL如果尝试将重复的值放到此唯一索引中,就会出现此错误,比如,当你尝试插入一条新的行后,插入值跟现在主键或唯一索引中已存在的值相同时,MySQL就会报出这个错误。

解决方法

这个错误是由于使用了重复的值导致的,所以,要修复此错误,首先应该用明确的查询语句去检查数据库中唯一索引已存在的值或者空值,如果空值,在其他表中用相同唯一索引字段可以查询到值时,可以将这个值插入到空值字段中。 如果存在重复字段值,可以根据应用场景把重复值修改成一个新的唯一值来解决此问题,也可以修改唯一索引字段上的字段值,然后加入到表中。 为了防止出现此类错误,应在代码层面添加唯一索引检查,在尝试插入时事先检查数据库中是否有重复的值。

你可能感兴趣的