私はOracleからPostgreSQLに移行しています。 私たちはしばらくの間、Liquibaseに移行しましたが、最初から移行していません。今私は、データベースを完全に展開し、そこでデータを転送するために、移行の追加と適用に取り組んでいます。作成テーブルのliquibaseの制約の参照
これで、別のテーブルに関連付けられた制約を持つ列を持つテーブルを作成しないというような問題が発生しました。この制約は、制約内のテーブルの前に明示的に指定されたスキームがあるため選択されません。
指定されていないスキームのテーブルの制約で、デフォルトのスキームが使用されたことを指定する方法はありますか?ここ 3.5.3
Mavenのプラグインを LiquiBaseを-達人 - プラグインを使用し
プロパティである:ここ
Url: jdbc: postgresql: //192.168.1.1: 5432/postgres
DefaultSchemaName: ist
ReferencedTableSchemaName: ist
Username: test
Password: 123
Verbose: true
DropFirst: false
移行片
- createTable:
TableName: opr_possibilities
Remarks: Operator capability map
Columns:
- column:
Name: id
Type: number (11)
Remarks: ID
Constraints:
Nullable: false
PrimaryKey: true
- column:
Name: operator_id
Type: number (11)
Remarks: Operator ID
Constraints:
Nullable: false
ForeignKeyName: fk_possibility_operator
References: ds_obj_opr (id)
# ReferencedTableName: ds_obj_opr
# ReferencedColumnNames: id
ある移行は、このような要求を生成します:
CREATE TABLE ist.opr_possibilities (
id numeric(11) NOT NULL,
operator_id numeric(11) NOT NULL,
begin_date date DEFAULT NOW() NOT NULL,
end_date date DEFAULT NOW() NOT NULL,
duty BOOLEAN DEFAULT FALSE NOT NULL,
status numeric(4) DEFAULT 0 NOT NULL,
type numeric(4) DEFAULT 0 NOT NULL,
remarks VARCHAR(255),
CONSTRAINT PK_OPR_POSSIBILITIES PRIMARY KEY (id),
CONSTRAINT fk_possibility_operator FOREIGN KEY (operator_id) REFERENCES ds_obj_opr(id)
)
この問題をエレガントに解決する方法を教えてください。 ありがとうございます。
はい、あなたは正しいです、私はこれらの決定をエレガントであるとは考えていませんでした) しかし、私はこの問題はバグだと思います。 「参照」に「defaultSchemaName」が使用されていないのはなぜですか? "addForeignKeyConstraint"と同様に "constraintName"は "objectQuotingStrategy" = "QUOTE_ALL_OBJECTS"に注意していません。 しかし、私はマイグレーションでネイティブの問い合わせが使用されているため、スキーマ指定を変数で適用しました。 答えに感謝します) – Alex