【问题标题】:How it is possible to do a migration in different schemas?如何在不同的模式中进行迁移?
【发布时间】:2012-02-23 06:39:10
【问题描述】:

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

但这不起作用。所有表都将在系统模式中创建。只有我的迁移表会在 schemas[0] 中创建。所有其他模式都是空的。

我的代码 sn-ps 来了:

<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 文件将执行到指定的架构。

最好的问候,

马塞尔

【问题讨论】:

    标签: java migration flyway


    【解决方案1】:

    schemas 属性告诉 Flyway 在哪里创建元数据表以及使用哪些模式进行清理。

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

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

    • 更改数据库连接用户
    • 在表名前加上它所属的架构

    【讨论】:

      猜你喜欢
      • 2011-01-30
      • 2019-11-29
      • 2014-01-29
      • 1970-01-01
      • 1970-01-01
      • 2015-10-06
      • 1970-01-01
      • 2020-05-02
      • 2011-01-04
      相关资源
      最近更新 更多