0

単純な SQL を Oracle 11gR2 データベースの別のスキーマに移行しようとしています。
Spring コンテキスト内でシステム ユーザーにデータソースを定義し、さらにターゲット スキーマの schemas パラメータを設定しました。

しかし、それはうまくいきません。すべてのテーブルは、システム スキーマ内に作成されます。schemas[0] には、私の移行テーブルのみが作成されます。他のすべてのスキーマは空です。

ここに私のコードスニペットがあります:

<bean id="flywaySYSTEM" class="com.googlecode.flyway.core.Flyway">
    <property name="dataSource" ref="dsSYSTEM" />
    <property name="schemas">
        <list>
            <value>MZEB</value>
            <value>MZEB2</value>
        </list>
    </property>
</bean>


@Test
/**
 * Test with an local oracle database.
 */
public void createSchemasInOracle(){
    Flyway flySYSTEM = (Flyway)beanFactory.getBean("flywaySYSTEM");
    flySYSTEM.clean();
    flySYSTEM.migrate();
}

SQL:

CREATE TABLE test_user (name VARCHAR(25) NOT NULL,PRIMARY KEY(name));

私の期待は、これらの sql ファイルが指定されたスキーマに対して実行されることでした。

よろしくお願いします、

マルセル

4

1 に答える 1

2

schemas プロパティは、メタデータ テーブルを作成する場所とクリーンに使用するスキーマを Flyway に指示します。

移行で接頭辞なしのテーブル名を参照すると、その接続のデフォルト スキーマが使用されます。Oracle の場合、これは通常、現在のユーザーを意味します。

問題を解決するには、次のいずれかを実行できます

  • データベース接続ユーザーを変更する
  • テーブル名の前に、それが属するスキーマを付けます
于 2012-01-31T21:39:06.190 に答える