当前位置: 首页 > 知识库问答 >
问题:

如何使用liquibase在不同模式中创建相同的表

拓拔高畅
2023-03-14

假设我有一个表'some-table',我想在多个模式中创建它。名为“create-some-table.yaml”的文件

 databaseChangeLog:
      - changeSet:
          id: create-some-table
          runOnChange: true
          author: gimazov (generated)
          preConditions:
            - onFail: MARK_RAN
              not:
                tableExists:
                  tableName: some-table
          changes:
            - createTable:
                columns:
                  - column:
                      autoIncrement: true
                      constraints:
                        nullable: false
                        primaryKey: true
                        primaryKeyName: some-table_pkey
                      name: id
                      type: BIGINT
                tableName: some-table
                schemaName: ${schema}
 databaseChangeLog:
  - property:
      name: schema
      value: schema1
  - include:
      file: classpath:/db/changelog/create-some-table.yaml

最后一个是changelog-master,它非常简单

databaseChangeLog:
    - include:
        file: classpath:/db/changelog/schema1.yaml
    - include:
        file: classpath:/db/changelog/schema2.yaml

有什么办法我可以做类似这样的事情吗,谢谢:)

共有1个答案

孟德曜
2023-03-14

有这样的结构呢?

master.changelog.yaml
  schemas
    schema1.changelog.yaml
    schema2.changelog.yaml
  templates
    templates.changelog.yaml
    table1.template.yaml
    table2.template.yaml
    ...

因此,在master.changelog.yaml中,您将包括schema1.changelog.yamlschema2.changelog.yaml。在这两个文件中,您都将包含templates.changelog.yaml并设置Schema的参数。然后在templates.changelog.yaml中包含所有模式通用的所有模板。我认为这应该可行,但我没有使用LiquiBase中的YAML格式的经验。对于不应该发布的xml。

 类似资料:
  • 3. 我不想在我的API中传递所有的参数作为请求体,有些只有查询、变量、输入有些只有查询和变量,就像上面的json数据,我想创建相同的模型,可以在其余的API中使用。目前,我已经为每个API创建了不同的模型。 公共类CreatetRequest{ } 这里我在所有API中复制了我的模型,所以我想创建三个模型类,其中包含所有必需的变量,这些变量在我的引导应用程序中都是常见的,但同时我必须避免在res

  • 假设一个对象有10个实例,其中有一些字段。其中一个字段指定ID。另外两个字段包含有关位置(纬度和经度)的数据。一个字段包含日期时间信息。 在这10个例子中,ID保持不变,但与日期、时间和位置相关的字段发生了变化。 上述数据是虚拟数据。但你可以观察到id保持不变,只是位置和时间发生了变化。 使用java, sping-data-elasticsearch我能够把信息在弹性搜索。 我面临的问题是,在弹

  • 我希望在相同的主机上创建,但使用不同的模式。我想在测试模式上创建特定于应用程序的表,在batchmetadata模式上创建元数据表。 错误: 我浏览了如下链接:不同模式中的Spring-batch元数据表和不同模式中的Spring批处理表,但code仍然在测试模式上生成。 Application.Properties 新错误:

  • 我试图为不同的包设置单独的日志文件。我使用一个包装类的记录器。我的应用程序中的每个类都调用相同的包装器类。我的包装类: 这就是所谓的: 有没有办法配置log4j,以便将不同包的日志记录输出到不同的文件? 谢谢! 编辑: 这是我的文件:

  • 问题内容: 我用Java编写了AWS Lambda函数。我用来上传Lambda 的工具(Terraform)想要使用jar文件的SHA-256哈希值来跟踪是否需要上传新版本的Lambda。 问题在于,不同OS平台(Windows和Linux)上的不同JDK创建的字节码略有不同(即使使用相同的JDK“更新”版本)。这意味着,如果我在Windows上上传了一个lambda,然后在Linux上重新运行了

  • 我有一个场景,其中一个url“serachUser”可能带有两个不同的值(请求参数)userId或UserName。 为此我创造了两种方法 但我得到模糊映射发现异常。Spring能处理这种情况吗?