2016-03-07 3 views
0

Первый из моих многочисленных сценариев миграции создает схему и табличное пространство, в которых все остальные сценарии миграции создают таблицы, выполняют вставки и т. Д. Это делается для того, чтобы я мог удалить всю схему и начать с нуля с помощью пролета. Команда migd migway migrate соединяется как «SYS AS SYSDBA», проверяет мои файлы миграции и затем дает мне следующую ошибку:Невозможно выполнить пролет мигрировать с помощью схемы SYS

ОШИБКА: найдена непустая схема «SYS» без таблицы метаданных! Используйте baseline() или установите для baselineOnMigrate значение true для инициализации таблицы метаданных.

Настройка baselineOnMigrate to true в flyway.conf ничего не меняет.

Является ли то, что я пытаюсь сделать возможным? Есть ли причина, по которой я не должен этого делать?

+1

Ни при каких обстоятельствах ни при каких обстоятельствах не создавайте объект, принадлежащий SYS. Вам всегда нужно создать новую схему для любых объектов пользователя, которые вы хотите создать. У меня нет опыта работы с пролетным путём, но я бы сильно * предположил, что вы захотите создать новую схему, поместить объекты своего приложения в эту схему и использовать этого пользователя при запуске flyway. –

+0

Объекты не создаются по схеме SYS. Табличное пространство и схема создаются в первом сценарии миграции. Затем каждый последующий объект создается в соответствии с этой схемой, как указано в вопросе. – Roger

+0

ОК. Таким образом, вы не пытаетесь перенести свою схему SYS? Только схема, созданная для вашего приложения? Заголовок и сообщение об ошибке заставляют меня думать, что вы говорите, что хотите перенести схему SYS. –

ответ

0

Я считаю, что вы, возможно, не задали конфигурационную конфигурацию «schemas» правильно. Если он не установлен вообще, Flyway будет только use the connection schema - в этом случае «SYS». Затем он попытается создать таблицу SCHEMA_MIGRATION как SYS, а затем завершится, потому что SYS не пуст.

Решение было бы установить переменную «schemas» для другого пользователя, а затем Flyway автоматически создаст этого пользователя, если он еще не существует. Просто добавьте сценарий миграции, который предоставит вам соответствующие права (например, connect/resource), необходимые вашему приложению, и, возможно, сбросит пароль для этого пользователя с помощью инструкции ALTER USER (вместо инструкции CREATE USER).