mysql:解决隐式事务提交?

时间:2011-01-25 18:53:05

标签: mysql transactions

我为我们的项目编写了一个工具,用于将已提交的sql更新文件应用于数据库。每当运行(部署)时,它都会计算需要应用的更新文件列表,并在事务处理中应用它们。

最近我意识到了一个问题:每当执行DDL语句(如create)时,mysql都会隐式提交事务。 http://dev.mysql.com/doc/refman/5.0/en/implicit-commit.html

这对我来说是一个问题,因为有时sql更新文件包含多个语句,据我所知,这将导致在执行更新文件的过程中提交事务。这是一个问题,因为每当后续更新失败(这种情况不时发生)时,我希望能够回滚事务,或者至少跟踪哪些更新文件应用(完全),哪些不是。

是否有解决隐式交易问题的方法?即有没有办法在其中一个DDL语句失败时回滚一系列DDL语句?

我可以处理这个问题的任何其他建议吗?

由于

吉迪

1 个答案:

答案 0 :(得分:2)

没有。 MySQL不支持事务DDL。您需要将DDL语句与DML语句分开,或者尝试使用RuckUsing等迁移工具