迁移到现有的数据库中没有匹配迁移

问题描述:

我在Django 1.9.8在网站上的工作,和我想它的一个更新版本部署到服务器演示它。迁移到现有的数据库中没有匹配迁移

正如我一直在学习的Django我开发这个,我已经取得了误删我的迁移,并创造新的,当我遇到数据库问题的几十倍。当我能够删除现有的数据库时,这在我的开发中可以正常工作,但是会导致试图在演示服务器上部署此问题而不会丢失现有数据库数据的问题。

我没有在演示服务器上现有的数据库模式迁移,当我运行manage.py makemigration <myappname>,它创建了一个应用程序初始迁移。当我尝试运行manage.py migrate <myappname>,它告诉我,该表已经存在(因为迁移尝试添加所有这些表的,而不是做需要在数据库上进行修改)。

有没有办法根据当前数据库创建初始迁移,然后我可以运行makemigrations来获得将修改当前数据库以使其与当前模型保持最新的迁移?

Appologies如果这已经是某个地方说,我已经看了看,没有勒金中找到答案。

谢谢!

+0

看看Django文档的这一部分:https://开头的文档。 djangoproject.com/en/1.10/howto/legacy-databases/这可能会帮助你 – Ire

+0

当然你的代码是在版本控制,但?难道你不能恢复删除你的迁移的变化吗? –

的Django认为迁移已经运行,因为有在django_migrations表中的迁移项。这是django注册已经完成的迁移的地方。您需要进入postres并删除不需要的迁移行。这假设你的db schema与你的models.py相匹配。如果有差异,您需要手动编辑迁移文件以消除任何差异,或修改models.py temporariliy以匹配。

​​

现在删除所有迁移文件夹在您的应用程序,然后运行: ./manage.py迁移--fake-初始

如果你的models.py或迁移进行编辑,以匹配当前的DB模式你现在要在其上运行的差异迁移,运行./manage.py makemigrations,然后迁移

也看这里:Django 1.8: Create initial migrations for existing schema