Error number: MY-013658; Symbol: ER_IB_MSG_UNDO_INJECT_FAILURE; SQLSTATE: HY000
Message: Injected debug failure point: %s
错误说明
MY-013658 ER_IB_MSG_UNDO_INJECT_FAILURE (HY000) 是MySQL定义的SQLSTATE标准值,表示发生在InnoDB引擎存储引擎上的操作发生故障。操作失败的错误主要是由在引擎之间迁移数据时出现的问题造成的。
常见案例
当两个MySQL 工具之间,用于迁移数据的操作失败,或者当MySQL客户端发起迁移请求而有效率不佳的情况下,就会出现这个错误。部分常见的案例有:当使用相同的连接或者相同的参数再次执行时发生了错误,使用InnoDB API从另一个数据库获取数据时发生错误,存储过程中出现错误时,用于绑定参数的语句发生了错误,由于线程已经被暂停,无法执行一个不支持在该状态下执行的操作等。
解决方法
对于 MY-013658 ER_IB_MSG_UNDO_INJECT_FAILURE (HY000) 错误,诊断常见关键现象是,认证完成后没有发生正常操作,无法完成查询。
针对于此类错误,MySQL 提供了两个重要的准备步骤,即首先明确是什么触发了连接失败,或者执行失败。
第一步,重点检查认证机制,查看哪些用户或是哪类用户可能会出现问题,以及是否授权,是否存在ip/hostname等类型的访问限制,或是类似的问题。
第二步,检查数据库功能,检查表空间,检查索引,优化数据文件机制,优化查询,检查维护计划等,检查是否有性能损耗或是错误。
此外,可以利用 MySQL Performance Schema 来诊断MY-013658 ER_IB_MSG_UNDO_INJECT_FAILURE (HY000) 错误,将其转换成具体的问题,并根据情况提出解决方案。如检查性能自身的性能指标,找出IO问题,或是处理操作影响性能的页面,找出锁定瓶颈,分析SQL问题并找到正确的操作方案,等等。