我不明白在域类自动创建了相应的数据库表之后,修改域类的“标准实践”是什么。
Grails中没有“迁移”,我也无法告诉它输出它将生成的新SQL,这样您就可以将它与以前的表定义进行比较,并手动发出您自己的ALTER table命令(这就是我在django中所做的)。
我刚买了一本书“Grails的权威指南”,这本书没有提及这个主题,我在Grails网站上找不到任何东西。
发布于 2009-08-03 04:08:29
这是grails的一个弱点,我不知道解决它的好方法。我所做的是创建修改后的域类的副本,然后将修改后的域类的表的SQL模式与域类的副本生成的SQL模式进行比较。然后,您必须手动对原始表进行任何必要的更改。我发现,当域类发生变化时,诸如关系之类的事情往往会改变,但诸如添加约束以强制字段成为文本类型之类的事情并不总是会改变......
发布于 2009-08-03 04:13:01
如果您想显式地管理Grails应用程序的数据库模式,我建议您考虑一下Grails Liquibase plugin或Grails autobase plugin。
发布于 2009-08-05 06:34:52
也许你应该考虑为你的应用程序创建一个独立于数据库的备份/恢复模块(可以被序列化为xml或json) -这样,当你更改数据库时,你也修改了备份/恢复,这样旧域数据就会“升级”到新的域数据。
我喜欢django可以自动完成这件事,但django中还有更多我不理解的魔力……
https://stackoverflow.com/questions/1220505
复制