2016-10-27 7 views
0

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

Так что единственное решение, о котором я могу думать, - это экспортировать базу данных с старой машины, где она работает, на новую. Будет ли это работать?

Это не решит проблему сломанной миграции, но, по крайней мере, я могу работать над кодом до тех пор, пока не будет надлежащего решения.

+0

Вы попробовали 'makemigrations'? Если вы меняете модели, вам нужно сначала добавить файл пакета миграции внутри приложения. Но, чтобы автоматически сделать это, вы должны использовать 'python manage.py makemigrations'. – iraycd

+2

Вы уверены, что обе ваши установки запускаются в одних и тех же версиях Django? 1.4 является старым и до сих пор использует Юг, в то время как Django> = 1.7 приносит свою собственную миграционную систему (замену Юга). – Risadinha

+0

Да, старый использует 1.4 и использует южные миграции. – dabadaba

ответ

0

Ответ на этот вопрос:

Таким образом, единственное решение, которое я могу вспомнить, экспортировать базу данных из старой машины, где она работает, на новый. Будет ли это работать?

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

  1. получить дамп от текущей производственной машины
  2. создать новую базу данных и загрузить свалка
  3. проверить, есть ли различие между моделями и историей миграции (это более надежно с новыми миграциями Джанго , Юг был внешним инструментом и не имел всех возможностей) (например, ./manage.py showmigrations (1.10), ./manage.py migrate --list (1.7-1.9 и юг)
  4. Если вы уверены, что миграция не должна выполняться, но в листинге показаны различия, : ./manage.py migrate --fake

Обратите внимание, что в новых версиях вы можете сделать ./manage.py migrate, и он сообщит, что все в порядке, если модели и миграции синхронизированы. Это может быть проверка работоспособности перед развертыванием на производство.