我发现DDL语句(alter table
,create index
等)隐式提交MySQL中的当前事务,我感到有点惊讶。来自MS SQL Server,在本地事务中进行数据库更改(然后回滚)的能力是我工作流程的重要部分。对于持续集成,如果迁移因任何原因而被打扰,则使用回滚,这样至少我们不会使数据库处于半迁移状态。
在使用迁移和持续集成的MySQL时,人们如何解决这两个问题?
答案 0 :(得分:2)
DDL语句会导致隐式提交,您无法对其进行任何操作。没有办法阻止这种行为。
哪些DDL语句会随着时间的推移而发生这种变化,因此您需要检查您的版本。
5.1 http://dev.mysql.com/doc/refman/5.1/en/implicit-commit.html
5.5 http://dev.mysql.com/doc/refman/5.5/en/implicit-commit.html
5.6 http://dev.mysql.com/doc/refman/5.6/en/implicit-commit.html
当我们只是扩展模式,新表/ columns / views / procs / etc,它们不会影响现有代码,然后自动化就可以了,只需检查错误并修复它们。
当它们影响现有代码时,您需要根据具体情况制定策略。由于没有回滚,您需要自己的退出计划,并且需要彻底测试。
由于具体情况,我可以为您的特定情况提供帮助。
答案 1 :(得分:2)
一种可能性是以非破坏性方式进行DDL更改,其中包括: