Jim*_*Jim 4 mysql transaction network
当客户端连接丢失时,事务会发生什么。
例如,客户端是一个 Web 应用程序代码,它启动到远程服务器实例的事务。客户端向服务器发送sql代码,等待事务完成。
如果网络连接失败会怎样?这是否取决于我们在交易中的位置?它无关紧要吗?流产了吗?
Bil*_*win 10
http://dev.mysql.com/doc/refman/5.6/en/innodb-implicit-commit.html说:
如果禁用自动提交的会话在没有明确提交最终事务的情况下结束,MySQL 会回滚该事务。
这意味着如果您的会话因任何原因断开连接,无论是出于选择,还是因为发生网络连接失败等错误,正在进行的事务将被回滚。
如果您考虑一下,这是 RDBMS 唯一适合做的事情。它不知道您是否仅部分完成了交易工作。例如,您可能借记了一个银行账户,而您打算贷记另一个银行账户以反映资金转帐。如果借方发生但贷方未发生,并且连接丢失,MySQL 无法完成事务,甚至无法知道您下一步要做什么。所以它必须回滚到目前为止的所有工作。