MySQL Error number: MY-010666; Symbol: ER_NDB_CONFLICT_GENERIC_MESSAGE; SQLSTATE: HY000

文档解释

Error number: MY-010666; Symbol: ER_NDB_CONFLICT_GENERIC_MESSAGE; SQLSTATE: HY000

Message: %s

错误说明

MY-010666(ER_NDB_CONFLICT_GENERIC_MESSAGE)错误是MySQL出现冲突时,会抛出的一个错误。这个错误信息常常用于MySQL-NDB Cluster,指出一个由NDB Storage Engine抛出的一个通用冲突。

常见案例

MY-010666(ER_NDB_CONFLICT_GENERIC_MESSAGE)错误最常见的场景就是,当使用MySQL的NDB Storage Engine的时候,两个或多个用户在相同的表上同时进行之前没有完成的写事务操作。由于操作都会拥有同样的事务ID,会导致冲突发生,也就是BM-010666(ER_NDB_CONFLICT_GENERIC_MESSAGE)错误了。

解决方法

对于MY-010666(ER_NDB_CONFLICT_GENERIC_MESSAGE)错误,最佳解决方案其实就是避免发生该错误,关键就在一个良好的事务获取机制上。一般来说,事务采用先检查-再更新的机制,先检查有没有可能发生冲突的操作,发现可能发生冲突的时候,再进行相应的更新操作。如果依然无法避免冲突,那么可以使用悲观锁,对事务进行加锁,在对同一数据项资源进行锁定,只有在一个事务解锁之后,另一个事务才能获取到锁,这样就可以确保同一资源只能被一个事务操作,避免冲突发生。

你可能感兴趣的