Error number: MY-013614; Symbol: ER_IB_LOCK_VALIDATE_LATCH_ORDER_VIOLATION; SQLSTATE: HY000
Message: %s
MY-013614:ER_IB_LOCK_VALIDATE_LATCH_ORDER_VIOLATION:HY000错误
错误说明:
MySQL错误号ER_IB_LOCK_VALIDATE_LATCH_ORDER_VIOLATION的SQLSTATE HY000,表示互斥锁请求期间检测到闩锁顺序冲突。该错误代码为InnoDB抛出,表明当某个会话尝试获取不正确的互斥锁(Mutex)时产生了此错误。
此错误一般由InnoDB进行乐观并发控制时出现。例如,当多个事务请求相同的行锁,但先后顺序不同时,会抛出此错误,表示并发控制失败。
解决方法:
1. 将表的引擎由InnoDB修改为MyISAM,以关闭InnoDB的乐观并发控制机制。
2. 增加innodb_lock_wait_timeout的值,若此值不够大,互斥锁可能无法得到有效的释放而导致此错误。
3. 确保业务应用程序不会多次地请求相同的行锁,而且只有保证先后顺序正确的情况下,才可以获得行锁。