当前位置: 首页 > 知识库问答 >
问题:

Liquibase与Grails的上下文

闽阳州
2023-03-14

我在Grails应用程序中很好地使用Liquibase变更集上下文时遇到了一个问题。我有一组变更集,我只想在“测试”上下文中运行。但是,它们每次都在执行。我想我有配置问题。

<changeSet id="v1.1-garbage-1" author="Eric" context="test">
    <insert tableName="patient">
        [...]
    </insert>
</changeSet>
environments {
  development {
    dataSource {
        dbCreate = "create" 
        jndiName = "java:comp/env/jdbc/mydatabasename"
    }
  }
  test {
    dataSource {
        dbCreate = "create"
        url = "jdbc:h2:mem:testDb;MVCC=TRUE;LOCK_TIMEOUT=10000"
    }
  }
[...]
// Database Migration plugin
grails.plugin.databasemigration.updateOnStart = true
grails.plugin.databasemigration.updateOnStartFileNames = ['changelog.xml']
grails.plugin.databasemigration.autoMigrateScripts = ['RunApp', 'TestApp']
grails.plugin.databasemigration.changelogFileName = "changelog.xml"
grails.plugin.databasemigration.development.updateOnStartContexts = ['development']

根据我的理解,在最后一行中,我告诉databasemigration插件将“Development”上下文设置为“Development”,因此当Liquibase执行时,它不应该运行上面的变更集,因为它是在“Test”上下文中定义的。

然而,当我运行应用程序时,我的变更集将被执行。我在设置中犯了什么错误或错过了什么?

共有1个答案

鲁城
2023-03-14

我敢打赌,最后一个配置行没有执行您所期望的操作。

根据http://grails-plugins.github.io/grails-database-migration/docs/manual/guide/3%20configuration.html的“multiple DataSource example”部分,该语法用于多个数据源。因此,在您的示例中,UpdateOnStartContexts参数将应用于一个名为datasource_development的数据源,而您显然没有...

您能否尝试以下方法:

environments {
    development{
        grails.plugin.databasemigration.updateOnStartContexts = ['development']
    }
}
 类似资料:
  • 我们用的是3.5磅。下面是主变更日志 现在在ChangeLog-V13.0.00.3.xml中,我们有了这些变更集:

  • 全部列出相应的文件。 有什么想法吗? 战争爆发是这样的: 将grails应用程序内自动更新功能与data-migration 1.4.0插件一起使用是行不通的,因为使用liquibase 2.0.5版本很难编码,它有主要的bug。 由于不兼容,目前不使用liquibase 3.4+。 如果在不包括war文件位置的情况下尝试该命令,我会正确地得到一个错误,即无法找到所需的changelog文件,并在

  • 问题内容: 您会建议使用哪种工具在Grails + Tomcat(+ Ubuntu)环境中进行持续集成?詹金斯?哈德森?还有吗 我不是在寻找任何复杂的东西……简单就可以了。 问题答案: 我刚刚在Jenkins中配置了grails作业(在debian上运行)。我真的不能说其他CI服务器。.我也知道apache连续体,但是好几年没有使用它了。 对于Debian / Ubuntu,您只需添加 在/etc

  • 问题内容: 有以下问题: 我试图在grails中创建simpel文件上传功能。我刚刚创建了一个带有 作为财产。Grails为我完成了其余的大部分工作。对于开发环境中的标准hsqldb来说,它运行良好。 然后,我将其部署到配置了oracle db(瘦驱动程序)的服务器上。除了文件上传外,其他所有内容都可以在oracle db中正常工作。对于文件上传,我得到了(据我所记得) SQLException:

  • 我有一个Springboot项目,它使用Liquibase进行数据库迁移,使用Jooq进行数据库访问和相关的代码生成。当Jooq反省一个应用了所有更改的数据库时,这很好,但是现在我想转换到内存中的H2数据库来生成代码,这样Jooq就不依赖于我的实际(Postgres)数据库。 但是当使用Jooq生成源时,我现在得到一个错误,因为我有一个唯一约束的列上有一个重复的键异常。我注意到这是因为我使用Liq

  • 我多年来一直在使用Spring MVC,我试图理解与Spring Boot的一些关键区别。 你能帮我确认一下吗?或者让我明白我在这里遗漏了什么?