【发布时间】:2016-01-21 20:51:35
【问题描述】:
如何将两列分配给 Derby DB 的 Lquibase datamigration.xml 文件中的一个索引。我使用了以下与 oracle 和 MSSQL 配合良好的代码。但 derby 正在创建具有相同索引名称的两行。
<createIndex indexName="idx_group_name" tableName="rights" unique="true">
<column name="name"/>
<column name="group_name"/>
</createIndex>
【问题讨论】:
-
以上代码结果如下: oracle:- indexName = idx_group_name;列名 = 名称、组名。但是,德比有所不同。它创建两个索引名称;如:indexName = idx_group_name;列名 = 名称和索引名 = idx_group_name;列名 = 组名。如果您能像在 oracle 中一样帮助工作,我将不胜感激。我需要修复它,因为在数据迁移的下一步中,德比抱怨它有重复的索引名称。谢谢
-
底层 Derby 数据库可以处理多列索引 (db.apache.org/derby/docs/10.12/ref/rrefsqlj20937.html),所以问题是由于某种原因 liquibase 没有生成单个多列索引。
-
@BryanPendleton 感谢您的投入。我认为应该有一些方法可以在 liquibase 中修复它。任何人都可以提供见解吗?谢谢
-
你能用 'updateSQL' 运行 liquibase 来证明它确实创建了 2 个 sql 吗?我在 liquibase 代码中看不到任何在 derby 上创建两个语句的内容(或者在创建索引时处理 derby 完全不同)。但我也不监督整个代码...
-
@Jens 我不确定它是否创建了 2sqls,但上面的代码创建了两个索引名称,每个列名称用于 Derby,但一个索引名称和列名称用逗号分隔用于 Oracle 和 MSSQL。