Загрузка на 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.