【问题标题】:Rename Schema Using Liquibase使用 Liquibase 重命名架构
【发布时间】:2021-07-18 16:39:42
【问题描述】:

假设 Liquibase 变更集的 V1 定义如下:

<changeSet author="newco" id="create-old_table_name">  
    <createTable tableName="old_table_name">
        ...
    </createTable>
</changeSet>

V1 没有定义模式名称,因此据我了解它有一个默认值,但在 V2 中我想指定一个模式名称:

<changeSet author="newco" id="update-v2-rename-old_table_name">  
    <renameTable newTableName="old_table_name" 
                 oldTableName="old_table_name" 
                 schemaName="example"/>  
</changeSet>

但这不起作用并引发异常,说明表名没有更改。是不是不能改架构?

【问题讨论】:

  • 您希望如何更改架构以及针对哪个数据库?每个数据库的操作可能完全不同。

标签: liquibase


【解决方案1】:

您想在这里实现什么数据库更改?

如果要将表从一个架构移动到另一个架构,则需要使用 SQL 更改,因为“renameTable”更改类型仅用于重命名同一架构内的表。

参见例如how to move tables from public to other schema in Postgres 用于在 psql 中实现该移动所需的 SQL

这样的?

<sql>
  ALTER TABLE old_table_name
  SET SCHEMA example;
</sql>

【讨论】:

    猜你喜欢
    • 2014-05-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-23
    • 2017-07-18
    • 2011-10-18
    • 2014-06-22
    • 2018-09-24
    相关资源
    最近更新 更多