liquibase preconditions yaml

时间:2014-05-28 20:41:03

标签: xml yaml liquibase preconditions

是否可以在YAML中使用Precondition我没有找到除此页面之外的任何来源http://www.liquibase.org/documentation/yaml_format.html

但我正在寻找相当于:

<changeSet id="addColumn-example">
  <preConditions onFail="MARK_RAN">
     <columnExists schemaName="earls" 
           tableName="category" columnName="display_name"/>
  </preConditions>
  <dropColumn columnName="display_name" schemaName="earls" tableName="category"/>
</changeSet>  

所以我的自然翻译将是:

changeSet:
  id: addColumn-example
  author: francis
  preConditions:
    - columnExist:
      schemaName: earls
      tableName: category
      columnName: display_name                    
  changes:
    - addColumn:
      columns:
        - column:
          name: display_name
          type: varchar(100)

但我在失败中失踪......

5 个答案:

答案 0 :(得分:7)

这个主题很难记录,但经过多次尝试......你可以这样写:

databaseChangeLog:
  - changeSet:
      id: 1
      author: pazfernando
      preConditions:
        - onFail: MARK_RAN
        - tableExists:
            schemaName: sa
            tableName: PROVEEDORBIENSERVICIO
      changes:
        - renameTable:
            newTableName: PROVEEDORBIENSERVICIO
            oldTableName: PROVEEDORSERVICIO
            schemaName: sa

我希望它有所帮助......再见

答案 1 :(得分:4)

以下似乎有效:

databaseChangeLog:
  - changeSet:
      id: 1
      author: mraible
      preConditions:
        onFail: MARK_RAN
        not:
          sequenceExists:
            schemaName: public
            sequenceName: hibernate_sequence
      changes:
      - createSequence:
          sequenceName: hibernate_sequence

答案 2 :(得分:0)

这可能与Liquibase 3.1.x不兼容,但应该在刚刚发布的3.2.0版本中运行。你的示例changeSet应该是正确的。

答案 3 :(得分:0)

sqlCheck条件的语法:

databaseChangeLog:
- changeSet:
    id: changeSet-id
    author: myName
    preConditions:
      - onFail: MARK_RAN
      - sqlCheck:
          expectedResult: 1
          sql: "select count(*) from foo where some-condition"
    changes:
      - sql: "your sql script"

答案 4 :(得分:0)

DBMS前提条件

databaseChangeLog:
  - changeSet:
      id: 1
      author: yourname
      dbms: oracle,h2
      changes:
        - sql: "your sql script"

您可以看到,这不是真正的前提条件,但是我发现它的工作原理类似:如果数据库类型不匹配,则更改集将被忽略。