Java Liquibase unique constraint不适用于名为';名称';但适用于任何其他列
我想使两列唯一,我创建了带有两个addUniqueConstraint的变更列表,原因是当我试图在一个addUniqueConstraint columnNames部分中列出所需的列时,它不起作用 所以,我已经为“setSpec”列指定了addUniqueConstraint,为“name”列指定了second,但该约束仅应用于“setSpec”列,并且我仍然可以插入具有重复名称值的实体。此外,我还尝试将列从“name”重命名为“set_name”,但行为却没有改变 所以现在我对两个专栏的独特性感到困惑。有谁能提出一个解决方案,或者指出我的错误,因为我认为这么大的库不会有这么简单的缺陷。非常感谢。但这里有一件有趣的事情,当我只留下一个addUniqueConstraint部分时,任何一个指定的列都会得到约束 这是我的桌子:Java Liquibase unique constraint不适用于名为';名称';但适用于任何其他列,java,postgresql,liquibase,liquibase-sql,Java,Postgresql,Liquibase,Liquibase Sql,我想使两列唯一,我创建了带有两个addUniqueConstraint的变更列表,原因是当我试图在一个addUniqueConstraint columnNames部分中列出所需的列时,它不起作用 所以,我已经为“setSpec”列指定了addUniqueConstraint,为“name”列指定了second,但该约束仅应用于“setSpec”列,并且我仍然可以插入具有重复名称值的实体。此外,我还尝试将列从“name”重命名为“set_name”,但行为却没有改变 所以现在我对两个专栏的独特性
<changeSet id="2020-07-07--16-00-create-set-table" author="Illia Daliek">
<createTable tableName="set">
<column name="id" type="uuid">
<constraints primaryKey="true" nullable="false"/>
</column>
<column name="name" type="varchar(255)">
<constraints nullable="false"/>
</column>
<column name="description" type="varchar(1024)"/>
<column name="setSpec" type="varchar(255)">
<constraints nullable="false"/>
</column>
<column name="created_by_user_id" type="uuid"/>
<column name="created_date" type="timestamptz"/>
<column name="updated_by_user_id" type="uuid"/>
<column name="updated_date" type="timestamptz"/>
</createTable>
</changeSet>
下面是我尝试添加唯一约束的步骤
<changeSet id="rename-column" author="Illia Daliek">
<renameColumn tableName="set" oldColumnName="name" newColumnName="set_name"/>
</changeSet>
<!--this one works fine-->
<changeSet id="2020-08-28--11-00-add-unique-constraint-to-set.set_spec-column " author="Illia Daliek">
<addUniqueConstraint columnNames="setSpec"
constraintName="unique"
schemaName="${database.defaultSchemaName}"
tableName="set"/>
</changeSet>
<!--this one doesn't work-->
<changeSet id="2020-08-28--11-00-add-unique-constraint-to-set.name-column " author="Illia Daliek">
<addUniqueConstraint columnNames="set_name"
constraintName="unique"
schemaName="${database.defaultSchemaName}"
tableName="set"/>
</changeSet>
为第二个约束提供另一个约束名称。我认为一张表上不能有两个名称相同的约束出现了什么错误?请注意,一列上的两个唯一约束与两列上的一个唯一约束不同。但是columnNames=“setspec,name”
应该可以在两列上创建一个约束谢谢你的回答,但这没有帮助,嗯,好的。也不痛。您是否可以共享任何错误日志?