Загрузка на Heroku - ProgrammingError: relation does not exist

Я развернул свое приложение на Heroku, но не могу добавить никаких данных. Когда я попытался открыть первую таблицу с данными из модели, я получил следующее сообщение об ошибке:

ProgrammingError at /category/category_table
relation "tables_category" does not exist
LINE 1: SELECT COUNT(*) AS "__count" FROM "tables_category"

Когда я попытался добавить первые данные, я получил следующее сообщение об ошибке:

ProgrammingError at /admin/tables/category/add/
relation "tables_category" does not exist
LINE 1: INSERT INTO "tables_category" ("category_name") VALUES ('sho...

Я просмотрел похожие Q/A здесь, но они не решают мой вопрос, так как у меня:

a) удалил все файлы миграции с моего локального диска, затем

b) Я запускаю: python3 manage.py makemigrations

c) Я запускаю: heroku run python3 manage.py migrate

Итак, все должно быть обновлено, и у меня есть этот журнал от Heroku:

Operations to perform:
  Apply all migrations: admin, auth, contenttypes, sessions, tables
Running migrations:
  No migrations to apply.

В настоящее время не знаю, что делать.

Не удалять миграции

Первый шаг здесь очень опасен:

Я... удалил все файлы миграции со своего локального диска

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

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

Я настоятельно рекомендую восстановить старые файлы миграции, а затем создать новые миграции на их основе.

Генерирование и применение миграций

Когда вы бежите

python3 manage.py makemigrations

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

heroku run python3 manage.py migrate

ничего не сделает.

После создания миграций на локальной машине примените их локально, выполнив python manage.py migrate, чтобы убедиться, что они делают то, что должны делать. Когда вы будете довольны ими, зафиксируйте файлы, переразверните их на Heroku и после этого запустите миграции на Heroku.

Вернуться на верх