2017-01-11 7 views
1

К сожалению, я только что заметил проблему в одной из моих предыдущих миграций, в которой я указываю baseTableSchemaName и теперь не могу создать базу данных с альтернативным именем. Я не думаю, что у кого-нибудь есть какие-то советы о том, как их изменить, а затем очистить контрольные суммы в производстве. В то время как следующее;миграция базы данных Grails - изменение предыдущих миграций

grails dbm-clear-checksums

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

Есть ли способ автоматизировать этот и худший случай, можете ли вы просто обновить таблицу базы данных базы данных, чтобы установить MD5SUM на null?

ответ

0

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

Просто обновите все записи базы данных базы данных и установите md5sum = null. Новые контрольные суммы рассчитываются при следующем обновлении миграции базы данных.

0

Я не осведомлен о всех деталях вашей проблемы, тем более, что вопрос о том, сколько записей в базе данных необходимо фиксировать. Но я могу поделиться своим опытом, что я обычно делал с моим приложением (я использую grails 2.5.5). Например, допустим, что у нас мало изменений, которые были отредактированы, и контрольные суммы не совпадают. Я делаю следующее:

  1. Создать тестовую базу данных в среде разработки и синхронизировать все миграции с помощью версии latests на ней. Таким образом, в базе данных разработки вы будете иметь правильные значения md5sum. Хорошо, эти суммы независимы от среды и полагаются только на сам контент миграции.
  2. Перейдите в производственную базу данных и вручную обновите записи с правильными значениями, взятыми из базы данных разработки.
  3. Миграции не должны иметь конфликтов контрольной суммы.
+1

Tbh, я пытался попытаться исправить это за один шаг, вместо того, чтобы обновлять отдельные записи. Я также использую Grails 2.5.5. Я на самом деле просто пошел дальше и протестировал решение, в котором я обновляю все записи базы данных и устанавливаю md5sum = null. Это сработало для меня. Есть ли причина, почему вы не используете этот простой метод преодоления проблемы? Новые контрольные суммы рассчитываются в следующем обновлении миграции базы данных в любом случае. – dre

+0

@ dre> Есть ли причина, почему вы не используете этот простой метод преодоления проблемы? Это не пришло мне в голову. Спасибо за ваш результат. Я буду проверять его в следующий раз, когда у меня возникнут проблемы с этим :) Я считаю, что вы должны отправить свое решение в качестве ответа и отметить его как принятый ответ. Ваше решение намного проще, чем мое. –

+0

Спасибо @Andrej. Это было не совсем то, что я искал, но я добавлю это так или иначе, если удастся кому-то помочь. – dre

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

  • Нет связанных вопросов^_^