如何使用 Liquibase 强制列顺序?
Posted
技术标签:
【中文标题】如何使用 Liquibase 强制列顺序?【英文标题】:How to enforce column order with Liquibase? 【发布时间】:2015-06-03 17:15:42 【问题描述】:设置:
-
liquibase 3.3.5
PostgreSQL 9.3
Windows 7 旗舰版
已使用
设置 Liquibase.properties 文件changeLogFile = C://temp/changeset.xml,
我使用 Liquibase (3.3.5) 创建了一个差异文件。
liquibase.bat diffChangeLog
检查 changeset.xml 文件显示
-<addColumn tableName="view_dx">
<column type="int8" name="counter" defaultValueNumeric="0" defaultValue="0"/>
</addColumn
问题是什么时候
liquibase.bat update
运行时,更改的表与参考表的列顺序不同。这会导致使用 SETOF 返回表行的存储过程出现问题。
在不破坏目标数据库现有表的情况下,如何使用 Liquibase 强制执行列顺序?
TIA
【问题讨论】:
【参考方案1】:我认为您通常无法让 Liquibase 强制执行列排序。您可能需要更改存储过程以使用列名而不是依赖位置,这无论如何都是一个好习惯。
【讨论】:
同意...不幸的是,我正在使用存储过程来反馈到似乎需要“SETOF”表示法的实体框架,因此列顺序至关重要。想法? 我认为此时您唯一的办法就是开始查看 Liquibase 源代码,看看您是否可以编写一个表达您的要求的测试。如果您可以修改 Liquibase 源代码本身以执行您想要的操作,您可能可以将其合并。您也可以编写一个 Liquibase 扩展来执行您想要的操作。【参考方案2】:您是否尝试过使用addColumn
标签的afterColumn
属性?
【讨论】:
以上是关于如何使用 Liquibase 强制列顺序?的主要内容,如果未能解决你的问题,请参考以下文章
使用 liquibase 构建测试脚本以使用普通脚本按顺序执行
如何使 liquibase 的 LoadData 标签不区分大小写?