如何为变更日志表指定架构位置
Posted
技术标签:
【中文标题】如何为变更日志表指定架构位置【英文标题】:How to specify schema location for changelog tables 【发布时间】:2016-05-04 01:08:39 【问题描述】:有没有办法指定 liquibase 在其中创建数据库更改日志表(databasechangelog 和 databasechangeloglock)的架构?
我正在使用 postgresql 和 gradle。我为我的应用程序(例如 myapplication)定义了一个架构。
当我从 gradle 运行 liquibase 更新任务时,应用程序特定的表在“myapplication”架构中正确创建,但 liquibase 更改日志内容是在“public”架构中创建的。
【问题讨论】:
【参考方案1】:文档中没有介绍,但在当前版本的 Liquibase 中可用(我不确定这适用于多远)是命令行参数
--liquibaseCatalogName
和
--liquibaseSchemaName
使用这些可以让您将“托管架构”和“liquibase 架构”分开。
对于 gradle,我想你会在你的配置块中指定这些:
liquibase
activities
main
changeLogFile 'changelog.groovy'
url 'jdbc:h2:db/liquibase_workshop;FILE_LOCK=NO'
username 'sa'
password ''
changeLogParameters([ myToken: 'myvalue',
second: 'secondValue'])
liquibaseSchemaName 'myLiquibaseSchema'
defaultSchemaName 'myApplicationSchema'
second
changeLogFile 'second.groovy'
url 'jdbc:h2:db/liquibase_workshop;FILE_LOCK=NO'
username 'sa'
password ''
changeLogParameters([ myToken: 'myvalue',
second: 'secondValue'])
// runList = project.ext.runList
// runList = 'main'
runList = 'main, second'
如果您使用的是属性文件,则您设置的属性与命令行选项的名称相同,因此您将拥有如下内容:
liquibaseSchemaName=myLiquibaseSchema
【讨论】:
如何指示 Liquibase 创建liquibaseSchemaName
?
Liquibase 目前没有可以创建新架构的命令。
我如何用 java 做到这一点?在属性文件中?我想将我的模型架构与 liquibase 表架构分开
已编辑以在属性文件中添加部分。
“Liquibase 目前没有可以创建新模式的命令”——这充其量是愚蠢的。当它错过了这样一个基本功能时,我无法理解这个工具的炒作以上是关于如何为变更日志表指定架构位置的主要内容,如果未能解决你的问题,请参考以下文章
数据流 ReadFromBigQuery 转换 - 如何为临时表配置位置