Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Postgresql Liquibase从变更日志中排除架构名称_Postgresql_Liquibase - Fatal编程技术网

Postgresql Liquibase从变更日志中排除架构名称

Postgresql Liquibase从变更日志中排除架构名称,postgresql,liquibase,Postgresql,Liquibase,我有一个多租户应用程序。每个租户在数据库中都有自己的模式。所有模式在逻辑上都是相同的,唯一的区别是模式名和实际模式 我希望能够运行liquibase:updateschemaname=myschema,它将更新给定的模式 我的changelogs.xml如下所示: <createTable tableName="myTable" schemaName="${schemaName}"> 现在,作为参数给出的模式和属性中定义的模式不匹配,即作为参数给出的模式没有自己的databasec

我有一个多租户应用程序。每个租户在数据库中都有自己的模式。所有模式在逻辑上都是相同的,唯一的区别是模式名和实际模式

我希望能够运行liquibase:updateschemaname=myschema,它将更新给定的模式

我的changelogs.xml如下所示:

<createTable tableName="myTable" schemaName="${schemaName}">
现在,作为参数给出的模式和属性中定义的模式不匹配,即作为参数给出的模式没有自己的databasechangelog和databasechangeloglock,而是根据公共模式中的这些表验证自己

错误

看起来schemaName参数更改了校验和

有没有办法:

以某种方式将schemaName从校验和中排除?或 在每个给定的schemaName上动态生成databasechangelog和databasechangeloglock?
运行liquibase时,请使用可选参数 -liquibaseSchemaName=[schemaName]

Liquibase将在[schemaName]中创建/使用changelog表,而不是连接到的默认用户


由于每个架构/租户都有自己的changelog副本,因此不会因架构名称的更改而导致任何校验和问题。

Liquibase仅使用单个数据库changelog表。不需要多个表,因为更改日志存储更改集标识符,即使将更改日志拆分为多个文件,每个更改集都是唯一的。如果要在不同的架构中创建单个表,可以使用defaultSchemaName:@a_horse_,带有_no_名称,那么如何处理多个架构?因为当您尝试更新另一个模式时,它会报告校验和冲突…您如何将该选项传递给liquibase maven插件?
url: jdbc:postgresql://localhost:5431/my-db?currentSchema=public
Error setting up or running Liquibase: Validation Failed:
[ERROR]      1 change sets check sum
[ERROR]           001-add-table-mytable.xml::001::wesleyy was: 7:fb1f721005e26807efc07bde45f459b9 but is now: 7:0722a27fccf7137a326a1e50685a22fc