MySQL Error number: MY-012485; Symbol: ER_IB_MSG_660; SQLSTATE: HY000 报错 故障修复 远程处理
文档解释
Error number: MY-012485; Symbol: ER_IB_MSG_660; SQLSTATE: HY000
Message: %s
错误说明
ER_IB_MSG_660,是MySQL的运行时错误,是在发生一个特定的条件时发生的。 这个错误的意思是,MySQL通过InnoDB机制发现一个活动的外键约束,而这个外键约束被另外一个表的数据修改打破了,而这个外键约束是MySQL实现引用完整性的手段之一。
常见案例
ER_IB_MSG_660可以在执行以下操作时发生:
1.在需要引用完整性机制的地方修改了另一个表的数据,
例如:在一个表中,有一列user_id,该列被设定为引用另一个表user的数据,在同时,user中的某一行被修改成别的值,就会出现ER_IB_MSG_660这个外键约束检查错误。
2.在视图中可能会出现此错误,
例如:在定义视图时含有引用另一个表数据的功能,然后在定义的视图中出现了修改另一个表数据的操作,也会出现这个错误。
解决方法
1.如果发生ER_IB_MSG_660,最简单的方法就是进行外键检查,以确保另一个表的数据没有损坏,恢复到正确的状态。
2.如果由于特定的业务目的,不能使用外键检查的话,可以使用程序代码的方法进行外键检查和递归检查来解决此错误。
3.此外,ER_IB_MSG_660错误还可以通过更改MySQL服务器的设置来解决。例如,可以在MySQL服务器中开启/关闭检查外键约束的功能(innodb_foreign_key_checks),更改其值为0便可以禁用此功能。