每次重新编译时都会清除Grails数据库

时间:2013-01-11 20:18:09

标签: grails gorm h2

我有一个Grails项目,其中开发环境使用内存中的H2数据库:

dataSource {
    dbCreate = "create"
    url = "jdbc:h2:mem:devDb;MVCC=TRUE;LOCK_TIMEOUT=10000"
}

我可以运行应用程序(使用run-app)并将一些内容放入数据库中(例如,使用脚手架控制器)。现在,如果我对源文件进行更改,Grails会检测到更改,重新编译该类,然后...清除数据库!

我尝试在JDBC URL中使用file而不是mem,但行为是相同的。我发现避免这种情况的唯一方法是将dbCreate设置为"update"而不是"create",但这也不是我想要的,因为我在应用程序{{{}中加载了一个fixture。 1}},所以当应用程序重新启动时,我最终得到了我的灯具的多个副本。

所以问题是:如何在重新编译类时阻止Grails重新创建数据库 - 或者,只要清除数据库就重新加载我的数据库?

1 个答案:

答案 0 :(得分:2)

有一个类似的“问题”here

每当您对域类进行更改时,Grails都会重置数据库。

通常,您的域类不应经常更改,因此这不是一个大问题。按照MVC模式,按照您的意图将逻辑放在控制器和服务中。 然后尝试一次性完成所有挂起的域类更改。