我正在对现有数据库进行一些架构更改.
我备份了数据库以获取开发副本,并进行了更改.我将创建一个单一的滚动脚本,以便在单个事务中迁移生产计算机上的更改.
是否存在创建回滚脚本的最佳实践,以解决部署问题?在我写之前,然后使用以下模式手工编写:
删除新约束和索引
更改表以删除新列
删除添加的表格
提交交易
有更好的方法吗?
你错过了第五步
删除新约束和索引
更改表以删除新列
删除添加的表格
提交交易
在生产中运行之前测试脚本的地狱
一个更有效的方法是,因为它们发生像办理变更登记手续RoR的 迁移 做.对于每个数据库更改,您将创建一个脚本,该脚本将应用更改并将其回滚(当然,根据您的选择).然后,您可以像控制代码那样将这些脚本置于版本控制之下.
此外,如果您在数据库中保留版本号,则可以通过使用版本号标识每个脚本并根据执行的操作增加或减少数据库中的版本号来使其自动化更多.