我正在处理一个非常复杂的代码库,并希望对它如何与 MySQL 一起工作进行一些反射(reflection)。 (请注意,我使用的是 InnoDB)。
具体来说,在我正在编写的方法中,我希望确定在其打开的数据库连接中是否有任何未完成的(未提交的)写入。
是否有任何 MySQL 命令或其他方法来检测是否有未提交的写入? (或者换句话说,确定 COMMIT 是否不做任何修改)。
最佳答案
这是一个非常有趣的问题。我认为没有明确的方法可以确定发出提交是否会对您正在运行的 session 产生影响。
您可以使用 show innodb status
或 show engine innodb status 查看交易但我认为您不能对这些交易发出 promise 。
INNODB_TRX
表将显示当前正在执行的事务:https://dev.mysql.com/doc/refman/5.5/en/innodb-trx-table.html同样,您也无能为力强制提交它们。您可以通过终止相关进程来回滚它们。
如果您使用 START TRANSACTION 运行事务在存储过程中,您可以手动处理提交和回滚。你甚至可以 set autocommit为 0 以控制何时回滚和何时提交。
关于mysql - 如何确定 MySQL 事务中是否有未提交的写入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34303079/