Django - Перенос данных в новую базу данных

Я использую Django в качестве веб-фреймворка с Django REST API. Снова и снова, когда я пытаюсь перенести таблицу на продакшн, я получаю множество ошибок. Я считаю, что мои миграции на стадии разработки не синхронизированы с производством, и в результате - хаос. Таким образом, каждый раз, когда я пытаюсь выполнить крупные миграции на производстве, мне приходится прибегать к ядерному варианту - удалять все миграции, а если это не удается, то взрывать базу данных. (Миграции вообще должны быть зафиксированы?)

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

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

Когда придет время делать миграцию на ваш рабочий сервер, возможно, имеет смысл --fake-initial и вручную внести изменения в базу данных вне Django, чтобы она соответствовала вашей схеме.

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


Отвечая на другие ваши вопросы

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

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

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

.

Вы не должны удалять файлы миграции каждый раз, когда возникает проблема.

Предполагается ли вообще фиксация миграций?

Вам определенно следует зафиксировать свои миграции. Если вы работаете в команде, они будут использовать созданные вами файлы миграции для внесения необходимых изменений в свою локальную БД, а также на любом dev/prod сервере, который у вас есть.

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