2012-10-02 3 views
5

Я использую grails 2.0.3, плагин для миграции базы данных (linibase) 1.1 и postgres 9.1.Liquibase: отношение «databasechangeloglock» уже существует, используя плагин grails и схему, отличную от стандартной.

Я вижу то, что я думаю, что это та же самая проблема описывается этими другими пользователями, но с морщинами:

морщины таковы:

  1. Я использую grails и плагин миграции базы данных.
  2. База данных производства не использует схему по умолчанию.
  3. I Должен использовать автоматическую миграцию базы данных при запуске (grails.plugin.databasemigration.updateOnStart = true), поскольку ни один разработчик не имеет доступа к фактической производственной базе данных.

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

Есть ли способ сделать плагин для миграции базы данных делать то, что мне нужно? Говорить, что администраторы баз данных могут организовать схемы по-разному, это не вариант.

Спасибо заранее, Ray А. Conner

ответ

3

Предпосылки и команда рефакторинга принимает атрибут SchemaName.

<tableExists schemaName="myschema" tableName="..."/> 
<createTable schemaName="myschema" tableName="..."/> 

Вы можете также параметризация его:

<databaseChangeLog ..> 
    <property name="schema.name" value="myschema"/> 
    .... 
    <changeset ...> 
    <createTable schemaName="${schema.name]" tableName="..."/> 
    </changeset> 
</databaseChangeLog> 

Для самого LiquiBase, вы можете установить defaultSchemaName, в вашем случае (Grails), это должно быть:

grails.plugin.databasemigration.updateOnStartDefaultSchema 
+0

Это для рефакторинга таблиц в схема моего приложения. Эта проблема связана с таблицами, которые Liquibase создает для себя, для хранения наборов изменений и для внутренней блокировки. –

+0

Добавлено ваше дело. –

+1

Я оставил работу, где это была проблема, и я еще не смог создать среду, настроенную для проверки вашего редактирования. Надеюсь, что слишком долго я смогу это сделать. –