我已经使用Grails
开发了一个应用程序,现在根据新要求,需要修改现有的domain classes
以及添加新的类并更改/建立新的关系。
现在,新要求已经实现,我将部署到生产环境。但是,DBA希望脚本更改生产数据库DDL。在引导应用程序时,DBA不允许auto create / update
的database schema
。
我知道如何导出DDL来创建表。但是该脚本将删除表,这意味着所有数据都将丢失。
但是我不知道如何导出DDL以进行DDL更新(没有删除表/重新创建表)。有人有好的建议吗?
最佳答案
您不能期望现有数据会按照新的数据库架构原样存储。
例如,您有一个表Sample,其中contactNumber
field
在现有nullable : true
中具有schema
约束,而在new schema
中,此约束已更改为nullable : true
和unique : true
。
在这种情况下,数据库将无法保持现有数据完整或适应新的架构。
要保留现有数据,您可能必须经历一个乏味的过程,例如-
Domain classes
所做的修改。 database schema
并部署新应用程序,然后让其创建database schema
。 script
或utility
,将根据新的数据库模式处理和存储database backup
中的数据。确保您编写的utility
具有处理对database schema
进行的修改(约束,添加字段,删除字段)的能力。 关于grails - 如何导出新版本的域(数据库架构)的DDL以进行更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39653664/