0

我尝试将简单的 sql 内容迁移到 Oracle 11gR2 数据库中的不同模式。
我已经在我的 spring 上下文中为系统用户定义了一个数据源,此外我还为目标模式设置了模式参数。

但这不起作用。所有表都将在系统模式中创建。只有我的迁移表会在 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 回答