2016-08-11 1 views
1

Часто при разработке приложений django модели меняются и, следовательно, добавляются миграции. ИМХО хорошая практика заключается в том, чтобы новый код, предназначенный для новой схемы базы данных, также был совместим со старой схемой, возможно, не отображая новых функций.указать глубину обратной совместимости миграции в приложениях или проектах (django)

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

Это устраняет некоторые проблемы при обновлении живого развертывания. Распределенные веб-узлы могут обновляться по одному, а миграция выполняется в конце.

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

Это заставляет задуматься, может ли приложение или проект указать, с какой миграцией он совместим?

Если нет, то что хорошего порядка обновления n веб-узлов и одной базы данных?

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

ответ

0

Есть несколько вещей, которые делают миграцию не совместим со старыми версиями кода:

  • Добавление NOT NULL колонки
  • Отбрасывание колонку (в то время как он все еще используется в старой версии)
  • Переименование столбца
  • изменяющего столбец (например, изменение типа)
  • переименования табличного

Существует проект под названием migration-linter, который может автоматически идентифицировать эти несовместимые миграции.

Надеюсь, что это поможет.

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