Error number: MY-012346; Symbol: ER_IB_MSG_521; SQLSTATE: HY000
Message: %s
错误说明:
MY-012346,ER_IB_MSG_521,HY000是MySQL报出的错误号,本错误表示“外键约束检查失败”。
1. 在MySQL中更新表中的数据时,如果更新的数据与外键的定义不符,就会引发这个错误。举个例子,假设一个表T1有一个字段c1,它依赖另一个表T2的字段c2,则当尝试向T1的c1插入T2的一个无效值时,就会抛出这个错误。
2. 在MySQL中创建外键约束时,如果发现多列组合无法在表上创建约束,就会发生这个错误。举个例子,假设表T1有字段c1和c2,c1和c2在T2上有一个索引,则当尝试在T1上创建一个索引包括字段c1和c2,就会抛出这个错误。
解决方法:
1.对于案例1,可以检查更新的数据,确保它与外键定义相符,然后再重新更新数据。
2.对于案例2,可以首先确保多列组合在表上可以创建索引,然后再创建外键约束。此外,还可以尝试使用alter table命令的ignore参数绕过此错误,但不推荐使用。