Error number: MY-012567; Symbol: ER_IB_MSG_742; SQLSTATE: HY000
Message: %s
错误说明
ER_IB_MSG_742错误是MySQL数据库中的System Error,全称为InnoDB: Error: Table ““ lock in SHARE MODE cannot be resumed in a different lock mode,这个错误表明尝试将表重新恢复到一个具有不同锁定模式的尝试失败了。
常见案例
ER_IB_MSG_742错误通常出现在需要更改表锁定模式时,例如尝试将表从共享模式重新恢复到排它锁模式。这是一个不可逆的变更,因此表可能无法从共享模式恢复到排他锁模式,这可能会导致该错误的出现。
解决方法
首先,我们需要检查是否已经存在对于同一表的一致的排他锁模式的请求,因为排他锁会排斥对该表的其他操作。同样,检查表不能够从现在的共享锁模式切换到排它锁模式,因为这是不允许的。
使用MySQL官方给出的存储过程,可以完成将表名从共享模式恢复到排它模式的操作,如下所示:
CALL mysql.rdb_resume_table_lock(in_schema_name ,in_table_name ,in_lock_mode );
参数:
in_schema_name:对应数据库的名称,指定要恢复锁定模式的表所属的数据库的名称
in_table_name:表的名称
in_lock_mode:锁定模式,0代表共享模式,1代表排他模式
如果存储过程被正确执行,也就是说表恢复到了不同锁定模式,就会把ER_IB_MSG_742这个错误解决掉。但是,如果存储过程没有正常执行,还需要重新分析应用程序,以确保没有其他因素影响表的锁定模式的恢复操作。