addForeignKeyConstraint + liquibase在maven pom中使用

时间:2016-02-10 15:38:43

标签: mysql pom.xml liquibase

我需要使用liquibase创建下面的表但是低于错误。有人可以帮我辨别出这有什么问题吗?我是DB&的新手liquibase。

<changeSet author="mohan" id="table-for-users-roles">
    <createTable tableName="USERS">
        <column name="ID" type="NUMBER(19,0)" >
            <constraints nullable="false" primaryKey="true" primaryKeyName="PK_USERS"/>
        </column>
        <column name="NAME" type="VARCHAR2(10)" remarks="User name"></column>
        <column name="PASSWORD" type="VARCHAR2(10)" remarks="Password"></column>
    </createTable>

    <createTable tableName="ROLES">
        <column name="ID" type="NUMBER(19,0)" >
            <constraints nullable="false" primaryKey="true" primaryKeyName="PK_ROLES"/>
        </column>
        <column name="NAME" type="VARCHAR2(10)" remarks="Role name"></column>
    </createTable>

    <createTable tableName="USER_ROLES">
        <column name="USER_ID" type="NUMBER(19,0)" >
            <constraints nullable="false" primaryKey="true" primaryKeyName="PK_USER_ROLES"/>
        </column>
        <column name="ROLE_ID" type="NUMBER(19,0)">
            <constraints nullable="false" primaryKey="true" primaryKeyName="PK_USER_ROLES"/>
        </column>
    </createTable>

    <addForeignKeyConstraint constraintName="FK_USERS" baseColumnNames="ID" baseTableName="USERS" referencedTableName="USER_ROLES" referencedColumnNames="USER_ID" />

    <addForeignKeyConstraint constraintName="FK_ROLES" baseColumnNames="ID" baseTableName="ROLES" referencedTableName="USER_ROLES" referencedColumnNames="ROLE_ID" />   
</changeSet>

这是错误:

SEVERE 2/10/16 10:32 AM: liquibase: change-logs/wm-db-changelog-master.xml: change-logs/1.0/wm-db-changelog-1.0.xml::table-for-users-roles::mohan: Change Set change-logs/1.0/wm-db-changelog-1.0.xml::table-for-users-roles::mohan failed.  Error: ORA-02270: no matching unique or primary key for this column-list
[Failed SQL: ALTER TABLE USERS ADD CONSTRAINT FK_USERS FOREIGN KEY (ID) REFERENCES USER_ROLES (USER_ID)] liquibase.exception.DatabaseException: ORA-02270: no matching unique or primary key for this column-list
[Failed SQL: ALTER TABLE USERS ADD CONSTRAINT FK_USERS FOREIGN KEY (ID) REFERENCES USER_ROLES (USER_ID)]
at liquibase.executor.jvm.JdbcExecutor$ExecuteStatementCallback.doInStatement(JdbcExecutor.java:301)

提前致谢!

1 个答案:

答案 0 :(得分:0)

不是在单个变更集中运行所有这些更改,而是将它们分成至少两个变更集。具体来说,我会在第二个变更集中将USERS和ROLES表相关的更改分开。