У меня есть рабочий сайт и база данных на моем dev-сервере, который я пытаюсь настроить на реальном сервере. Я делаю следующее:Переходы Django: отношения не существует
- Git клон репозитория с сервера Дев на реальном сервере
- Создать пустую базу данных на реальном сервере (Posgres)
- Update settings.py на реальном сервере для всех соответствующие настройки базы данных и т.д.
- удалить все миграции файлы/папки и удалить все * .pyc файлы
- питон manage.py makemigrations
Я получаю ошибку: django.db.utils.ProgrammingError: relation "myapp_mytable" does not exist
.
Кажется, что начальная миграция не может произойти. Единственное решение, которое я нашел, - это войти в свой файл settings.py
и прокомментировать все мои приложения в INSTALLED_APPS
и зайти в мой основной файл urls.py
и прокомментировать все мои URL.
После комментирования этих разделов я могу выполнить начальную миграцию. После этого я могу разогнать свои приложения и начать их миграцию один за другим, то есть: python manage.py makemigrations appname
, а затем python manage.py migrate
У меня есть обходное решение, но оно далеко не идеальное. Конечно, есть способ рассказать джанго, что я создал совершенно новую пустую базу данных, поэтому сначала нужно выполнить первоначальную миграцию. Я автоматизирую настройку сервера с помощью Ansible, поэтому требуя, чтобы я выполнял весь этот комментарий/раскомментирование руководства и несколько миграций, не очень хорош.
UPDATE:
Согласно комментариям, я не думаю, чтобы удалить миграции. Таким образом, я сделал следующее на dev-сервере, чтобы попытаться их воссоздать: link. Однако, хотя у меня теперь есть файлы миграции, которые я скопировал на живой сервер, когда я пытаюсь запустить их, я получаю ту же ошибку, что и выше.
Я прочитал файлы миграции, и я не вижу ничего, что упоминает о создании начальной схемы миграции/базы данных. Он упоминает только о создании моделей приложений. Я не могу понять, как выполнить начальную миграцию до того, как миграция приложений может быть выполнена. Мне нужно как-то воссоздать все файлы миграции (включая создание исходной схемы db) с нуля, чтобы они могли запускаться на сервере.
* Почему бы вам удалить все файлы миграции? Все дело не в этом, а в том, чтобы запустить те, которые вы уже создали. –
Хорошо, я, очевидно, неправильно понял, как это сделать. У меня создалось впечатление, что мне нужно запустить makemigrations на новом сервере, чтобы django увидела, что это пустая база данных и создает новые. Очевидно, я неправильно понял. Не уверен, почему совершенно правильный вопрос должен быть опущен. Тогда тогда возникает вопрос задать вопрос. Исходный вопрос обновлен. – darkpool
Поскольку ваш код находится в git, вы должны просто сбросить состояние туда, где выполняются миграции, а не воссоздавать их. И я не уверен, что вы подразумеваете под «как выполнить первоначальную миграцию до миграции приложений» - нет отдельной «начальной миграции». –