2016-04-05 15 views
2

データベースが存在しない場合は、Dropwizard(1.0.0)とLiquibaseを使用してデータベースを作成しています。Liquibase postgres用のスキーマを作成

ここでの問題は、私は別のPostgresスキーマ(公開されていない)を使用していることです。それはLiquibaseが以前にこのスキーマを作成できないようですね?私はこのスキーマを生成するためにLiquibaseを期待していましたが、データベースを構築しようとすると「名前xxのスキーマは見つかりません」というメッセージが常にスローされます。 LiquiBaseを、そのバンドルの変更/リファクタリングでCREATE SCHEMAを持っていない(したがってdropwizard db dump中に1つを発生させない)にもかかわらず

+1

LiquiBaseを実行する前に

CREATE TABLE PUBLIC.DATABASECHANGELOGLOCK ... CREATE TABLE PUBLIC.DATABASECHANGELOG ... 

を実行することを確認できます。変更ログに 'create schema'を含める必要があります –

+1

私はliquibase(--schema xx)を使用する前に実際にダンプを作成しており、スキーマ/全体のデータベースを再作成することを期待していました。 – Christian

+0

再度:Liquibaseは、変更ログの定義から生じるステートメントだけを実行します。それはあなたが逃しているオブジェクトを魔法や推測することはありません。 SQL文を書くための構造化された方法です。それはあなたのダンプについては何も知らない –

答えて

3

次のように、あなたはまだ、sql tagを使用して、移行の変更履歴でチェンジセットとしてこれを含めることができます:

<changeSet author="christian" id="1"> 
    <sql dbms="postgresql" endDelimiter=";"> 
     CREATE SCHEMA foo 
    </sql> 
</changeSet> 

LiquiBaseをそれは関係なく、PUBLICスキーマ、中自身テーブルだ作成することに注意してください - 任意のチェンジセットを適用する前に:
あなたがdropwizardでdb migrate --dry-runを実行する場合、あなたはLiquiBaseをまずあなたがそうするように指示せずに何かを作成しません

CREATE SCHEMA foo; 
+1

Liquibaseは '--defaultSchemaName'パラメータを使って独自のテーブルに別のスキーマを使用するよう指示できます。 –

+1

しかし、スキーマが最初に存在していなければなりません。 Liquibaseテーブルを作成しようとすると、同等のdropwizardコマンド 'db migrate --schema foo'が_" invalid schema name "_で失敗する – fspinnenhirn

+0

SQL ServerとPostgresのように複数のデータベースに変更ログファイルを使用することにした場合、まだ動作しますか?同じ変更のために2つの部分をdbmsプロパティで区別すると??? –

関連する問題