如何导出新版本的域(数据库模式)的DDL以进行更新

时间:2016-09-23 06:06:24

标签: grails gorm database-migration

我之前使用Grails开发了一个应用程序。现在根据新要求,需要修改现有的domain classes以及添加新类并更改/建立之间的新关系好。

现在新要求已经实施,我将部署到生产环境。但是,DBA希望脚本更改生产数据库DDL。在引导应用程序时,DBA不允许auto create / update database schema

我知道如何导出DDL来创建表格。但该脚本将删除表,这意味着所有数据都将丢失。 但我不知道如何导出DDL进行DDL更新(没有删除表/重新创建表)。有人有好的建议吗?

1 个答案:

答案 0 :(得分:0)

您不能指望现有数据按原样根据新数据库架构进行存储。

例如,您有一个表格示例,其中contactNumber field在您现有的nullable : true中具有schema约束,而new schema此约束条件包含nullable : true已更改为unique : true& Domain classes。 在这种情况下,数据库将无法保持现有数据的完整性或适应新模式。

要保留现有数据,您可能需要经历一个繁琐的过程,例如 -

  1. 备份现有数据库。
  2. 记下您对现有database schema
  3. 所做的修改
  4. 找出哪些修改可能导致失败/数据丢失。
  5. 删除较早的database schema&部署新应用程序并让它创建script
  6. 写一个utilitydatabase backup来处理&根据新的数据库模式存储来自utility的数据。确保您编写的database schema具有处理27完成的修改(约束,字段添加,字段已移除)的功能