MySQL Error number: MY-012103; Symbol: ER_IB_MSG_278; SQLSTATE: HY000 报错 故障修复 远程处理
文档解释
Error number: MY-012103; Symbol: ER_IB_MSG_278; SQLSTATE: HY000
Message: Tablespace %s, waiting for IO to stop for %lld seconds
错误说明:
MY-012103; ER_IB_MSG_278,这是MySQL中的内部错误(没有专门关联的SQLSTATE),是MySQL表相关数据表正在被访问或更新时产生的,表示同一事务中的不同隔离级别访问到了同一表中同一行读取到的不同版本出发的。
常见案例
1. 同一事务中多个隔离级别的事务访问同一表中的同一行,但它们读取到的行版本不同,导致隔离级别冲突;
2. 同一事务中,一个隔离级别为REPEATABLE READ的事务对表中的一行进行读取,另一个隔离级别为SERIALIZABLE的事务同时读取这个行,但通过不同的路径读取,而读取到的行版本不同,也可能发生同一事务内部的隔离级别冲突。
解决方法:
1. 尽量在不同的事务中进行数据库的更新操作,以保证隔离级别的一致;
2. 使用“LOCK IN SHARE MODE”子句对表先进行锁定,以避免改行两次以上的更新操作;
3. 配置每个事务使用9elease资源锁,以允许不同事务互斥地访问数据库;
4. 如果多个事务中需要共享数据库资源,可以把不同事务中的更新操作分割开,以确保操作的一致性。