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

Liquibase多个changelog执行

贺博厚
2023-03-14
@Configuration
@Slf4j
public class LiquibaseConfiguration {

  @Inject
  private DataSource dataSource;

  @Bean
  public SpringLiquibase liquibase() {
    log.info("################## Entering into liquibase #################");
    SpringLiquibase liquibase = new SpringLiquibase();
    liquibase.setDataSource(dataSource);
    liquibase.setChangeLog("classpath:schema/update-schema-01.sql");
    // Configure rest of liquibase here...
    // ...
    return liquibase;
  }
}

在我的应用程序中,我可能需要运行多个Changelog文件,但我无法执行这样的执行,
我尝试按以下方式提供多个Changelog,

LiquiBase.SetChangeLog(“classpath:schema/update-schema-01.sql”);

LiquiBase.SetChangeLog(“classpath:schema/update-schema-02.sql”);

请在这里建议一种包含所有changelogs的方法。

共有1个答案

江阳羽
2023-03-14

一个可能的解决方案是:您可以创建主changelog,它将包括其他changelogs。在SpringLiquiBase对象中,您将只设置一个主要的liquibase Changelog。

例如,假设您有两个changelog文件:one-changelog.xmltwo-changelog.xml,您需要运行这两个文件。我建议您再创建一个文件main-changelog.xml,并在其中包含one-changelog.xmltwo-changelog.xml文件,如下所示:

<?xml version="1.0" encoding="UTF-8"?>

<databaseChangeLog
xmlns="http://www.liquibase.org/xml/ns/dbchangelog/1.9"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog/1.9
        http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-1.9.xsd">

    <include file="one.xml"/>
    <include file="two.xml"/>
</databaseChangeLog>

并将main-changelog.xml文件设置为SpringLiquiBase的changelog。

 类似资料:
  • 我正在将一个庞大的基于Spring Boot1.x的项目升级到Spring Boot2.2。旧版本使用的是LiquiBase3.5,当前的升级分支使用的是LiquiBase3.8。 主changelog文件具有以下结构: LiquiBase的属性读取系统在3.5和3.8之间有变化吗? 作为变通方法,我使用这里定义的方法:https://reflectoring.io/database-migrat

  • 我在spring Boot2应用程序中有以下错误: 由:liquiBase.exception.changeLogParseException引起:读取迁移文件时出错:无法将类路径资源[src/main/resources/changeLogs/changeLog-1.0.xml]解析为URL,因为它不存在于liquiBase.parser.core.xml.xmlChangeLogsaxPars

  • 我们的应用程序目前有两个独立的数据库/模式。我们遇到了与此设置数据不一致的情况,因此我们要么需要跨两个数据库的事务处理,要么需要合并数据库。我们不想使用JTA事务,因为我们使用的是普通的Tomcat。因此我们的方法是将两个数据库/模式合并为一个。 这两个数据库/模式目前都是通过Liquibase管理的,我们希望维护两个单独的变更日志,因为一组实体来自第三方工具,另一组由我们管理。除了liquiba

  • 我想把liquibase介绍到我的项目中,首先,我想根据我的hibernate实体生成一个changelog文件。 感谢你的帮助.

  • 我在SpringBoot中使用liquiBase 3.8.0。我的changelog文件树如下所示: 我尝试使用上下文,但发现了奇怪的行为--如果我在changelog-master.xml或changelog-test.xml中使用上下文,就像这样(父级changelog文件): 之后,contexts列将填充“!prod AND test” 我希望contexts列始终是填充的(如果我在父ch

  • 解决这种迁移的合适方法是什么?扔掉changelog历史记录,使用修改后的changelog从头重新构建架构,然后迁移数据?有更好的方法吗?