Spring boot 在使用liquibase的所有模式中应用迁移

Spring boot 在使用liquibase的所有模式中应用迁移,spring-boot,hibernate,liquibase,Spring Boot,Hibernate,Liquibase,我使用SpringBoot开发了一个网站,在这个应用程序中,我使用体系结构多租户来管理我的数据库。我想使用Liquibase作为DB迁移工具。问题是,当我进行迁移时,新的修改(修改意味着向不同的表添加新列,并添加新表)只适用于公共模式,而不适用于其他SACHEM,我想要的是,当我进行迁移时,我希望新的修改适用于所有SACHEM ps:我正在使用hibernate创建新的sachemsLiquibase允许动态替换changelog文件中的属性。我们可以在一个文件中配置多个属性,然后在需要时使用它

我使用SpringBoot开发了一个网站,在这个应用程序中,我使用体系结构多租户来管理我的数据库。我想使用Liquibase作为DB迁移工具。问题是,当我进行迁移时,新的修改(修改意味着向不同的表添加新列,并添加新表)只适用于公共模式,而不适用于其他SACHEM,我想要的是,当我进行迁移时,我希望新的修改适用于所有SACHEM
ps:我正在使用hibernate创建新的sachems

Liquibase允许动态替换changelog文件中的属性。我们可以在一个文件中配置多个属性,然后在需要时使用它们。在您的情况下,我们可以使用一些值配置属性“schema1”、“schema2”,然后根据需要在changelog文件中使用${schema1}或${schema2}语法

在liquibase.properties文件中,我们将按如下方式配置这些属性:

schema1=ABC
schema2=PQR
Liquibase按以下顺序为配置的属性分配值或设置其优先级:

  • 作为传递给你的liquibase跑步者的属性
  • 作为JVM系统属性
  • 作为环境变量
  • 如果通过命令行运行liquibase,则将其作为CLI属性
  • 在liquibase.properties文件中
  • 在参数块中(DATABASECHANGELOG表的属性元素)
  • 您可以按照以下示例代码段执行此操作:

    1。将列添加到架构ABC中的某个表中

    <?xml version="1.0" encoding="UTF-8"?>
    <databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog
                          http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.8.xsd">
    
        <changeSet author="authorName" id="some-unique-id" dbms="${dbType}" context="some-context">
           <sql endDelimiter=";" splitStatements="true" stripComments="true">
                **My SQL query/ transactional logic goes here**
                ALTER TABLE "${schema1}"."TableName" ADD COLUMN COLUMNNAME DATATYPE;
           </sql>
        </changeSet>
        
    </databaseChangeLog>
    
    <?xml version="1.0" encoding="UTF-8"?>
    <databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog
                          http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.8.xsd">
    
        <changeSet author="authorName" id="some_unique_id" dbms="${dbType}" context="some_context">
            <createTable tableName="TableName" schemaName="${schema2}">
                <column name="id" type="VARCHAR(200)" />
                <column name="name" type="VARCHAR(255)"/>
            </createTable>
        </changeSet>
    
    </databaseChangeLog>
    
    
    **我的SQL查询/事务逻辑如下**
    更改表“${schema1}”。“TableName”添加列名数据类型;
    
    2。在PQR架构中创建表

    <?xml version="1.0" encoding="UTF-8"?>
    <databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog
                          http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.8.xsd">
    
        <changeSet author="authorName" id="some-unique-id" dbms="${dbType}" context="some-context">
           <sql endDelimiter=";" splitStatements="true" stripComments="true">
                **My SQL query/ transactional logic goes here**
                ALTER TABLE "${schema1}"."TableName" ADD COLUMN COLUMNNAME DATATYPE;
           </sql>
        </changeSet>
        
    </databaseChangeLog>
    
    <?xml version="1.0" encoding="UTF-8"?>
    <databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog
                          http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.8.xsd">
    
        <changeSet author="authorName" id="some_unique_id" dbms="${dbType}" context="some_context">
            <createTable tableName="TableName" schemaName="${schema2}">
                <column name="id" type="VARCHAR(200)" />
                <column name="name" type="VARCHAR(255)"/>
            </createTable>
        </changeSet>
    
    </databaseChangeLog>
    
    
    
    注意:上面的示例使用了2个属性(schema1和schema2)。你只能使用更多

    如果您需要有关创建“liquibase.properties”文件的帮助,请访问

    干杯