[英]How to avoid loss of DB when changing Grails domain class in development
Grails 2.0的一个优点是您可以在开发中更改域类,而无需重新启动应用程序服务器。 这是有效的,但是当我更改域类时,我丢失了所有的引导数据,这基本上违背了目的。 我正在使用默认的h2数据库。
解决这个问题的最佳方法是什么? 我是否必须去像Postgres这样的外部数据库?
新创建的Grails 2应用程序中的默认DataSource.groovy
具有
environments {
development {
dataSource {
dbCreate = "create-drop" // one of 'create', 'create-drop', 'update', 'validate', ''
url = "jdbc:h2:mem:devDb;MVCC=TRUE;LOCK_TIMEOUT=10000"
}
}
create-drop
意味着只要应用程序重新启动,就会从头开始重新创建数据库。 如果您希望数据库在重新启动后持续存在,请将其更改为类似的内容
dataSource {
dbCreate = "update" // one of 'create', 'create-drop', 'update', 'validate', ''
url = "jdbc:h2:devDb;MVCC=TRUE;LOCK_TIMEOUT=10000"
}
(即更改create-drop
以update
并从url
删除:mem
)。 但请注意,并非您对域类所做的所有更改都可以反映在update
可以应用的有限架构更改中。 添加属性应该没问题,但删除属性或更改影响模式生成的约束可能需要您删除并重新创建数据库(停止应用程序,删除devDb文件并再次启动它)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.