使用 Hibernate 和 Grails 更新完整的数据库架构

问题描述

有没有办法用 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 约束。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...