Как можно делать миграцию в разные схемы? - PullRequest
0 голосов
/ 31 января 2012

Я пытаюсь перенести простой SQL-материал в разные схемы в базе данных Oracle 11gR2.
Я определил источник данных для пользователя системы в моем весеннем контексте, кроме того, я установил параметр схемы для целевых схем.

Но это не работает. Все таблицы будут созданы в схеме системы. Только моя таблица миграции будет создана в схемах [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-файлы будут выполнены с указанными схемами.

С уважением,

Marcel

1 Ответ

2 голосов
/ 01 февраля 2012

Свойство schemas сообщает Flyway, где создать таблицу метаданных и какие схемы использовать для очистки.

Когда вы ссылаетесь на имя таблицы без префикса в вашей миграции, будет использоваться схема по умолчанию для этого соединения. Для Oracle это обычно означает текущего пользователя.

Чтобы решить вашу проблему, вы можете сделать одно из следующих действий:

  • изменить пользователя подключения к базе данных
  • префикс имени таблицы со схемой, к которой она принадлежит
...