liquibase 始终在 Postgres 中的公共模式中创建过程

问题描述 投票:0回答:1

我正在尝试使用 liquibase 并传递 schemaName 在 Postgres 中创建一个存储过程,但它总是在公共模式下创建存储过程。

我的变更集看起来像

> <createProcedure relativeToChangelogFile="true"
>         dbms="postgresql"
>         path="storedProcedures/cirrus_UTC_Timestamp.sql"
>         schemaName="cirrusdb"
>         procedureName="cirrus_UTC_Timestamp">
>         </createProcedure>

来自 Liquibase 命令的调试日志

C:/views/P4V/cirrus_dev/cirrus/main/build/package/src/main/resources/scripts/MasterDBChangeLogs.xml:
C:/views/P4V/cirrus_dev/cirrus/main/build/package/src/main/resources/scripts/MasterDBChangeLogs.xml::8.2.0.0-1::guptaa8:
Computed checksum for create Procedure:[
  dbms="postgresql"
  path="storedProcedures/cirrus_UTC_Timestamp.sql"
  procedureName="cirrus_UTC_Timestamp"
  relativeToChangelogFile="true"
  schemaName="cirrusdb" ] as 75cfb2062231cfb7a0813a82a4f62764 DEBUG 11/18/15 2:38 PM: liquibase: 
C:/views/P4V/cirrus_dev/cirrus/main/build/package/src/main/resources/scripts/MasterDBChangeLogs.xml:
 C:/views/P4V/cirrus_dev/cirrus/main/build/package/src/main/resources/scripts/MasterDBChangeLogs.xml::8.2.0.0-1::guptaa8:
Computed checksum for 7:75cf 
b2062231cfb7a0813a82a4f62764:7:0a8a327c03ced9a7b29acb65fee085b9 as 
0591c7cae23e75e7ea48680d9e7fb742 DEBUG 11/18/15 2:38 PM: liquibase: 
C:/views/P4V/cirrus_dev/cirrus/main/build/package/src/main/resources/scripts/MasterDBChangeLogs.xml:
C:/views/P4V/cirrus_dev/cirrus/main/build/package/src/main/resources/scripts/MasterDBChangeLogs.xml::8.2.0.0-1::guptaa8:
Computed checksum for 7:0591 c7cae23e75e7ea48680d9e7fb742: as 
ae8a55a46214d182fab4b59f8765b90d DEBUG 11/18/15 2:38 PM: liquibase: 
Release Database Lock DEBUG 11/18/15 2:38 PM: liquibase: Executing 
UPDATE database command: UPDATE cirrusdb.databasechangeloglock SET 
LOCKED = FALSE, LOCKEDBY = NULL, LOCKGRANTED = NULL WHERE ID = 1 INFO 
11/18/15 2:38 PM: liquibase: Successfully released change log lock 
Liquibase Update Successful

Liquibase 版本:3.4.1,Postgres 版本 9.3

liquibase
1个回答
0
投票

经过一些研究,我发现 liquibase(最高 3.4.2)不支持 createProcedure 标记上的 schemaName,其“信息性”仅:

来源:https://liquibase.jira.com/browse/CORE-2626

门票说明:

目前createProcedure schemaName没有被使用,它只是为了 信息目的。更改 createProcedure 以便如果 schemaName 为 指定时,它将使用 SqlParser 类来查找名称 过程在正文中,并在模式前面添加或替换 具有给定 schemaName 的现有架构。添加新的 liquibase.useProcedureSchema=true|false 标志,如果 false 则不会 进行解析,但添加 ALTER SESSION USE DEFAULT SCHEMA... 创建过程 SQL 之前和之后的语句。

© www.soinside.com 2019 - 2024. All rights reserved.