用 liquibase 改变柱长

gri*_*rdo 16 liquibase

我在使用 liquibase 更改 postgres 数据库中的列长度时遇到问题。

我有一个带有字段描述 varchar(300) 的表帐户。我想把它改成 varchar(2000)。

我在同一个文件中删除并重新创建了主键,所以我没有权限问题或架构/数据库名称或类似的东西。为了测试,我已经清除了数据表。

我在跑步

<changeSet author="liquibase" id="sample">
    <modifyDataType
        columnName="description"
        newDataType="varchar(2000)"
        schemaName="accountschema"
        tableName="account"/>
</changeSet>
Run Code Online (Sandbox Code Playgroud)

我收到此错误文本,但我无法理解问题。该列的唯一约束是非空约束,我成功添加了一个单独的更改日志来删除此约束(忽略我不明白为什么这会影响扩展字段长度的事实)。

谁能指出我做错了什么?

小智 26

您可以像这样增加列的大小:

<changeSet author="liquibase" id="sample">
    <modifyDataType
        columnName="description"
        newDataType="varchar(2000)"
        tableName="account"/>
</changeSet>
Run Code Online (Sandbox Code Playgroud)


Rol*_*der 6

您的 xml 文件中的架构定义不允许<modifyDataType ... />.

xsd 文件的版本应与您使用的 Liquibase 版本相匹配。异常看起来您使用的是 1.9 版的 xsd,请参阅http://www.liquibase.org/documentation/xml_format.html


naX*_*aXa 6

在 YAML 语法中,它看起来像:

databaseChangeLog:
  - changeSet:
      id: sample
      author: liquibase
      changes:
        - modifyDataType:
            columnName: description
            newDataType: varchar(2000)
            tableName: account
Run Code Online (Sandbox Code Playgroud)

对于 XML 语法,请参阅aashii 的回答