在我使用 liquibase 的所有架构中应用迁移

2024-03-08

我在这个应用程序中使用 spring boot 开发了一个网站,我使用架构多租户来管理我的数据库。我想使用 Liquibase 作为数据库迁移工具。问题是,当我进行迁移时,新的修改(修改意味着通过向不同的表添加新列并添加新表)仅适用于公共模式,不适用于其他 sachems ,我想要什么,当我这样做时迁移我希望新的修改适用于所有酋长 PS:我正在使用 hibernate 创建新的 sachems


Liquibase 允许动态替代更改日志文件中的属性。我们可以在一个文件中配置多个属性,然后在需要的地方使用它们。在您的情况下,我们可以使用一些值配置属性“schema1”、“schema2”,然后在更改日志文件中使用它${架构1} or ${架构2}根据要求的语法。

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

schema1=ABC
schema2=PQR

Liquibase 按以下顺序为配置的属性分配值或确定优先级:

  1. 作为传递给您的 liquibase 运行程序的属性。
  2. 作为 JVM 系统属性
  3. 作为环境变量
  4. 如果您通过命令行运行 liquibase,则作为 CLI 属性
  5. 在 liquibase.properties 文件中
  6. 在参数块中(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>

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">
        <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”文件的帮助,请访问此link https://docs.liquibase.com/workflows/liquibase-community/creating-config-properties.html

Cheers!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在我使用 liquibase 的所有架构中应用迁移 的相关文章

随机推荐