如何使用现有模型和迁移恢复 Django 项目的转储数据库备份?

Posted

技术标签:

【中文标题】如何使用现有模型和迁移恢复 Django 项目的转储数据库备份?【英文标题】:How to restore a dump database backup for a Django project with existing models and migrations? 【发布时间】:2021-10-30 13:53:45 【问题描述】:

从现有转储设置 mysql 数据库非常简单

# open prompt cd into the directory where the dump is located
# login to mysql
create database mydb
use mydb
source mydb.sql

一切都完成了! 但问题来自 Django。 Django 对尚未从模型和迁移系统创建的现有方案和数据存在问题。而在 Django 中,一切都必须来自模型和迁移。

我完全知道我有这个选项

python manage.py inspectdb > models.py

但这仅适用于使用现有数据库创建空白的新 Django 项目时。

如果我想将现有的 Django 项目运行到另一台机器上并且 Django 项目使用数据库怎么办?该项目已经有一些设置了 manage=false 的现有模型,我不能简单地检查它。如果我在 Django 外部恢复数据库,Django ORM 将不再识别它。

那么对于具有现有模型和迁移的项目,从数据库备份恢复数据库的正确方法是什么?

【问题讨论】:

如果我没看错,问题是:如何转储现有数据库? 【参考方案1】:

如果您要恢复的数据库以前由 django 管理,那么只需通过三步过程恢复数据库,您应该不会遇到任何问题。 Django 的迁移历史以表的形式存储在它管理的任何数据库中。只要该表完成,您的新迁移就应该可以正常工作。

【讨论】:

以上是关于如何使用现有模型和迁移恢复 Django 项目的转储数据库备份?的主要内容,如果未能解决你的问题,请参考以下文章

使 django 项目文件夹的迁移不起作用

在不破坏现有迁移的情况下重命名 Django 模型

如何将现有 CharField 与数据迁移到 Django 中的 IntegerField

将现有 auth.User 数据迁移到新的 Django 1.5 自定义用户模型?

如何使用 Python 迁移将 Heroku Django 应用程序的新模型表添加到远程 Heroku Postgres?

恢复 Django 1.7 RemoveField 迁移