MySQL Error number: MY-011883; Symbol: ER_IB_MSG_58; SQLSTATE: HY000

文档解释

Error number: MY-011883; Symbol: ER_IB_MSG_58; SQLSTATE: HY000

Message: %s

错误说明:

MySQL ER_IB_MSG_58 错误代号代表“试图从没有unique_id或primary_id列的表中查找unique_id/primary_id值”。在MySQL里,这是一个已知的错误,表明输入的查询语句无法被成功执行,因为Requested unique/primary key value does not exist in table或Table does not contain a unique/primary ID column这样的情况。

常见案例

最常见的MySQL ER_IB_MSG_58错误情况引用,就是在正确运行MySQL INSERT、UPDATE、DELETE或SELECT语句时遇到此错误。假设在一个含有unique_id列的表里执行查询语句,不幸的是,这些语句不包含unique_id列,会发出MySQL ER_IB_MSG_58错误。另外,MySQL ER_IB_MSG_58还可能会受到键值被其他表更新的影响,可能会出现这个错误代号。

解决方法:

解决MySQL ER_IB_MSG_58错误的第一步,就是确保客户端能够访问所需要的表,其次,确保表中有unique_id或primary_id列,再次,分析MySQL报错日志,确认明确是哪个表出现错误。

接着,需要核实输入的查询语句是否包含unique_id或primary_id列,如果没有,最好以这些列为核心,只要能够满足需要,就可以将查询SQL修改为SELECT、UPDATE,或者其它任何语句形式,为查询添加必要的UNIQUE和KEY字段。

此外,查找unique_id/primary_id的值也可能会出现ER_IB_MSG_58错误。存在这种情况的可能性并不高,因此,如果在查询语句中没有找到unique_id/primary_id列,仍然可以以另一种方式进行查询,例如使用某种数据库筛选函数,来导出相应的数据。另外,对于上述问题,也可以重新设计新的表,来解决unique_id/primary_id值的查找过程。

你可能感兴趣的