问题描述
有没有办法用 grails 和 hibernate 进行真正的数据库模式更新(没有数据丢失)?当我启动项目时,一些属性没有更新并产生错误。
我的用例:我想让我的属性可以为空,但在数据库中没有应用任何更改。
代码:
static constraints = {
property nullable: true
}
版本:
grailsversion=3.3.11
gormVersion=6.1.12.RELEASE
---
org.grails.plugins:hibernate5:${gormVersion-".RELEASE"}
配置:
dataSource:
dbCreate: update
pooled: true
jmxexport: true
driverClassName: org.mariadb.jdbc.Driver
dialect: org.hibernate.dialect.MysqL5InnoDBDialect
url: XX
username: vagrant
password: XX
谢谢!
解决方法
有没有办法进行真正的数据库架构更新(不丢失数据) 使用 grails 和休眠?
是的。您可以更新现有架构而不会丢失任何数据(假设您没有删除表/列)。您可以完全独立于 Grails 和 Hibernate 来做到这一点。如果您希望参与 Grails 和 Hibernate,您可以集成一个像 flyway 或 liquibase 这样的工具。 Database Migration Plugin 是解决此问题的一种方法。
编辑:
我想让我的属性可以为空,但在数据库中没有任何更改 已申请
如果这是唯一的要求,您可以简单地在域类中表达 nullable: true
并删除相应列上的任何 not null
约束。