1
여러 스키마가 있습니다 (2). 테이블을 생성 할 때 테이블간에 FK를 생성 할 수 없습니다. 모든 FK는 하나의 스키마 내에 있습니다. FK를 제거하면 잘 생성됩니다.liqubase에 여러 스키마가있는 외래 키를 생성 할 수 없습니다.
는 내가 무엇을 시도했다
mvn clean liquibase:update -Dt1Schema=t1 -Dt2Schema=t2
로 실행
<changeSet id="0" author="admin">
<createTable tableName="t1" remarks="t1" schemaName="${t1Schema}">
<column name="id" type="BIGINT" autoIncrement="true" remarks="id">
<constraints primaryKey="true" nullable="false"/>
</column>
</createTable>
<createTable tableName="t2" remarks="t2" schemaName="${t1Schema}">
<column name="id" type="BIGINT" autoIncrement="true" remarks="id">
<constraints primaryKey="true" nullable="false"/>
</column>
<column name="t1_id" type="BIGINT" remarks="t1 id">
<constraints nullable="true" deferrable="true" foreignKeyName="fk_t1_t2" referencedTableName="${t1Schema}.t1" referencedColumnNames="id"/>
</column>
</createTable>
</changeSet>
내가 얻을 :
ERROR: relation "teeregister.t1" does not exist [Failed SQL: CREATE TABLE teeregister.t2 ...
<changeSet id="0" author="admin">
<createTable tableName="t1" remarks="t1" schemaName="${t1Schema}">
<column name="id" type="BIGINT" autoIncrement="true" remarks="id">
<constraints primaryKey="true" nullable="false"/>
</column>
</createTable>
<createTable tableName="t2" remarks="t2" schemaName="${t1Schema}">
<column name="id" type="BIGINT" autoIncrement="true" remarks="id">
<constraints primaryKey="true" nullable="false"/>
</column>
<column name="t1_id" type="BIGINT" remarks="t1 id">
<constraints nullable="true"/>
</column>
</createTable>
</changeSet>
<changeSet id="1" author="admin">
<addForeignKeyConstraint baseColumnNames="t1_id" baseTableName="${t1Schema}.t2" constraintName="fk_t1_t2" referencedColumnNames="id" referencedTableName="${t1Schema}.t1"/>
</changeSet>
내가 얻을 :
ERROR: relation "teeregister.t2" does not exist [Failed SQL: ALTER TABLE "teeregister.t2" ADD CONSTRAINT ...
이 잘 작동
내가 할 필요가 모든 몇 가지 문서를 읽어
<plugin>
<groupId>org.liquibase</groupId>
<artifactId>liquibase-maven-plugin</artifactId>
<version>3.5.1</version>
<configuration>
<changeLogFile>src/main/resources/schema1.xml</changeLogFile>
<changeLogFile>src/main/resources/schema2.xml</changeLogFile>
<driver>org.postgresql.Driver</driver>
<url>jdbc:postgresql://localhost:5432/postgres</url>
<username>postgres</username>
<password>postgres</password>
</configuration>
</plugin>