Django - Перенос данных в новую базу данных
Я использую Django в качестве веб-фреймворка с Django REST API. Снова и снова, когда я пытаюсь перенести таблицу на продакшн, я получаю множество ошибок. Я считаю, что мои миграции на стадии разработки не синхронизированы с производством, и в результате - хаос. Таким образом, каждый раз, когда я пытаюсь выполнить крупные миграции на производстве, мне приходится прибегать к ядерному варианту - удалять все миграции, а если это не удается, то взрывать базу данных. (Миграции вообще должны быть зафиксированы?)
На этот раз, однако, у меня слишком много данных, которые можно потерять. Я хотел бы сохранить данные. Я хотел бы создать новую базу данных с новой схемой, а затем вручную перенести старую базу данных в новую. Я не совсем понимаю, как это сделать. Есть ли у кого-нибудь предложения? Кроме того, как я могу предотвратить это в будущем?
Из того, что вы говорите, похоже, что у вас не работают файлы миграции, и вы постоянно сталкиваетесь с проблемами, связанными с миграцией базы данных. Я бы рекомендовал вам просто удалить все файлы миграции и начать с новой начальной миграции после того, как вы сделаете все необходимые изменения модели и реструктуризацию схемы.
Когда придет время делать миграцию на ваш рабочий сервер, возможно, имеет смысл --fake-initial и вручную внести изменения в базу данных вне Django, чтобы она соответствовала вашей схеме.
Я могу получить много откликов по этому поводу, и, очевидно, используйте свое лучшее суждение, но из моего опыта было намного проще решить эту проблему таким образом и не тратить время на создание пользовательских файлов миграции, которые пытаются исправить все ваши проблемы.
Отвечая на другие ваши вопросы
Снова и снова, когда я пытаюсь перенести таблицу на производство, я получаю множество ошибок.
Я настоятельно рекомендую вам потратить время на ознакомление с тем, как делать миграции, прочитав официальную документацию Django, вы избавите себя от множества головных болей.
... каждый раз, когда я пытаюсь выполнить крупные миграции на производстве, мне приходится прибегать к ядерному варианту - удалять все миграции
.
Вы не должны удалять файлы миграции каждый раз, когда возникает проблема.
Предполагается ли вообще фиксация миграций?
Вам определенно следует зафиксировать свои миграции. Если вы работаете в команде, они будут использовать созданные вами файлы миграции для внесения необходимых изменений в свою локальную БД, а также на любом dev/prod сервере, который у вас есть.