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

Posted

技术标签:

【中文标题】如何在不同的模式中进行迁移?【英文标题】: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 文件将执行到指定的架构。

最好的问候,

马塞尔

【问题讨论】:

【参考方案1】:

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

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

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

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

【讨论】:

以上是关于如何在不同的模式中进行迁移?的主要内容,如果未能解决你的问题,请参考以下文章

Redis技术探索「数据迁移实战」手把手教你如何实现在线+离线模式进行迁移Redis数据实战指南(在线同步数据)

Redis 技术探索「数据迁移实战」手把手教你如何实现在线 + 离线模式进行迁移 Redis 数据实战指南(scan模式迁移)

Redis技术探索「数据迁移实战」手把手教你如何实现在线 + 离线模式进行迁移Redis数据实战指南(离线同步数据)

Redis 技术探索「数据迁移实战」手把手教你如何实现在线 + 离线模式进行迁移 Redis 数据实战指南(数据检查对比)

Redis 技术探索「数据迁移实战」手把手教你如何实现在线+离线模式进行迁移Redis数据实战指南(离线同步数据)

Redis 技术探索「数据迁移实战」手把手教你如何实现在线 + 离线模式进行迁移 Redis 数据实战指南(数据检查对比)