如何在不同的模式中进行迁移?

时间:2012-01-31 14:37:13

标签: java migration flyway

我尝试将简单的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文件将执行到指定的模式。

致以最诚挚的问候,

马塞尔

1 个答案:

答案 0 :(得分:2)

schemas属性告诉Flyway创建元数据表的位置以及用于清理的模式。

在迁移中引用未加前缀的表名时,将使用该连接的默认架构。对于Oracle,这通常意味着当前用户。

要解决您的问题,您可以执行以下操作之一

  • 更改数据库连接用户
  • 使用其所属的架构为表名添加前缀