2015-01-09 4 views
0

Я разрабатываю веб-приложение, которое позволяет использовать плагины (плагины не будут просто меняться во время выполнения, а скорее как клиент, заказывающий программное обеспечение вместе с плагинами A, B, C и выбор тогда редко изменится).Flyway & Applications, которые разрешают плагины

Некоторые из плагинов должны добавить свои собственные таблицы в схему базы данных. В настоящее время основная схема управляется пролетной дорогой, что делает миграции настолько опрятными и безболезненными, что я хотел бы продолжать это делать. Новые таблицы должны быть созданы в одной и той же схеме, чтобы JDBC-соединения могли использоваться совместно и что таблицы плагинов могут иметь внешние ключи для основных таблиц.

Однако, насколько я понял, пролетная дорога не принимает несколько экземпляров flyway, которые ссылаются на одну и ту же схему. Это верно? Есть ли другой способ заставить сценарий работать?

ответ

1

Новые таблицы должны быть созданы в той же схеме, что и JDBC-соединения могут использоваться совместно, а таблицы плагинов могут иметь внешние ключи для основных таблиц.

Этого не должно быть. Вы можете дать каждому плагину собственную схему и экземпляр Flyway. У вас может иметь внешние ключи между схемами и вы может относится к нескольким схемам через одно и то же соединение.

Если это не вариант, у вас все равно может быть экземпляр Flyway для каждого плагина (каждый со своей собственной таблицей метаданных), просто имейте в виду, что если все они указывают на одну и ту же схему, вызов clean() на любой из их, уничтожит всю схему.

Наконец, вы можете просто иметь одно пространство имен версий, где некоторые миграции просто отсутствуют в определенных средах (плагин не установлен).

+0

Следует отметить, что таблица метаданных настроена с использованием свойства flyway.table, и этот пролет будет жаловаться на то, что база данных не пуста при попытке перенести первый раз. Это можно обойти, установив «flyway.baselineVersion = 0'' flyway.baselineOnMigrate = true', а затем для нормальной миграции. – yankee

Смежные вопросы