[英]Transactional DDL workflow for MySQL
发现DDL语句( alter table
, create index
等)隐式提交MySQL中的当前事务,我有点惊讶。 来自MS SQL Server,在本地事务中进行数据库更改(然后回滚)的能力是我工作流程的重要部分。 对于持续集成,如果迁移因任何原因而被打扰,则使用回滚,这样至少我们不会使数据库处于半迁移状态。
在迁移和持续集成中使用MySQL时,人们如何解决这两个问题?
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,它们不会影响现有代码然后自动化就可以了,只需检查错误并修复它们。
当它们影响现有代码时,您需要根据具体情况制定策略。 由于没有回滚,您需要自己的退出计划,并且需要彻底测试。
因为它是个案,所以我可以提供很多帮助以满足您的特定情况。
一种可能性是以非破坏性方式进行DDL更改,其中包括:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.