gpt4 book ai didi

grails - 在开发中更改 Grails 域类时如何避免丢失数据库

转载 作者:行者123 更新时间:2023-12-04 06:23:37 25 4
gpt4 key购买 nike

Grails 2.0 的优点之一是您可以在开发过程中更改域类,而无需重新启动应用程序服务器。这行得通,但是当我更改域类时,我丢失了所有 Bootstrap 数据,这基本上违背了目的。我正在使用默认的 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)。但是请注意,并非您对域类所做的所有更改都可以反射(reflect)在 update 可以应用的有限架构更改中。添加属性应该没问题,但删除属性或更改影响架构生成的约束可能需要您删除并重新创建数据库(停止应用程序,删除 devDb 文件并重新启动)。

关于grails - 在开发中更改 Grails 域类时如何避免丢失数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12138815/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com