如何为变更日志表指定架构位置

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 目前没有可以创建新模式的命令”——这充其量是愚蠢的。当它错过了这样一个基本功能时,我无法理解这个工具的炒作

以上是关于如何为变更日志表指定架构位置的主要内容,如果未能解决你的问题,请参考以下文章

如何为 conda create 指定新的环境位置

数据流 ReadFromBigQuery 转换 - 如何为临时表配置位置

EF 5 + SQL Server CE 4:如何为数据库文件指定自定义位置?

如何为 MUI 表容器内的 div 制作一个固定位置?

如何为本地安装 npm 包设置自定义位置?

如何为 liquibase 变更集设置超时?