我想测试一个脚本,当MySQL事务失败时它会做什么。所以我想在COMMIT
上模拟交易失败。
图像脚本打开事务,进行一些查询,然后提交事务。我想在事务中植入一些额外的查询,以确保事务在ROLLBACK
上失败。所以我可以测试脚本如何从转换失败中恢复过来。
我不想使用明确的COMMIT
。我想在提交失败时模拟一些真实案例。确切的DB结构并不重要。它可能适应解决方案。
修改:我需要事务在COMMIT
失败,而不是先前的某些查询。因此,在FOREIGN_KEY_CHECKS=0
之前回滚的答案不是我想要的。比如这个:How to simulate a transaction failure?
我未成功的尝试:
插入带有无效PK或FK的行会立即失败。使用COMMIT
临时禁用FK支票不会有帮助,因为他们不会在{{1}}上重新检查。如果它是psql,那么可靠的约束会有所帮助。但不是在mysql中。
在两个事务中打开两个并行事务并插入具有相同PK(或具有唯一constaint的任何列)的行会锁定插入时的后一个事务并等待前一个事务。因此,事务在插入时回滚而不是在提交。
答案 0 :(得分:0)
所以我相信你可以试试以下
希望它有所帮助!