2013-08-30 2 views
0

Я использую плагин для миграции базы данных для управления изменениями в моей БД. Я последовал за этим руководством, шаг за шагом, для применения к моему проекту. Кажется, все в порядке, кроме команды «dbm-gorm-diff».Странное поведение в плагине базы данных для баз данных Grails

Во-первых, я создал моментальный снимок моей БД, используя команду «grails dbm-generate-gorm-changelog changelog.groovy». Затем я попытался изменить таблицу (называемую таблицей Person, добавить еще одно свойство) и запустить команду «dbm-gorm-diff». Но файл diff, который я получил, слишком велик. Это абсолютно новый полный снимок моей БД (включая новый добавленный столбец)! Я ожидал, что файл просто показывает только, что действительно изменилось в БД по сравнению с предыдущим состоянием.

Так это неправильно? Как я могу заставить его работать так, как я ожидал (и я думаю, что это правильный способ создания файла diff). Не могли бы вы помочь мне решить эту проблему? Большое вам спасибо.

P/S: Потому что у меня есть некоторые ошибки при выполнении команды «дБмВт-Горм-дифф», поэтому я применил это исправить https://github.com/ph4t/grails-database-migration/commit/68fff38397157740ee4d993c8bb67811a0f021bb
в базы данных миграции плагин. Он работает нормально, но дайте мне странный файл diff.

ответ

0

Если бы я тебя я удалю другие изменения после обновления человека класса:

, учитывая, что мой первый changlog.grovvy есть, а затем удалить все другие, что сценарий миграции запись на ваши чел.-обновления-список изменений .groovy например.

И

Остаются только что говорят вам колонки modifcations. Странно, что обновление для размера столбца, такого как

 varchar(20) to varchar(25) in database ,and 

     String Name 

     name(maxlenght:25) //this a change 

не может быть сгенерирован для обновления. Я просто добавить

 sql('Alter table column ...') 

, чтобы отразить изменения на database.So удалить эти сгенерированные коды, которые вы не понимаете и поддерживать изменения, сделанные вами.

0

Если я правильно понимаю вашу проблему, я полагаю, что вы можете выполнить шаги из последовательности. Dbm-generate-gorm-changelog сравнивает ваши объекты домена с базой данных и создает начальный журнал изменений. Запуск dbm-gorm-diff без применения изменений приведет к по существу тем же журналам изменений, что и вы. Я считаю, что жизненный цикл вы хотите ...

1) Создайте объекты GORM. 2) Запустить дБмВт генерировать-Горм-изменения 3) Запустить дБмВт-обновление для создания схемы базы данных объектов

Затем вы итерация путем внесения изменений в объекты домена.

1) Изменить GORM объект 2) Выполнить DBM-Горм-диф [некоторые имя файла] .xml -add 3) Запустить дБмВт-обновление 4) Повторите по мере необходимости.

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

См. http://grails-plugins.github.io/grails-database-migration/docs/manual/guide/index.html для получения более подробной информации.

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