删除迁移文件夹(Django 1.8)意外有什么选择?

时间:2017-01-23 01:47:47

标签: django postgresql django-models django-migrations

我意外删除了其中一个迁移文件夹,但没有备份。

我有什么选择?

DB是postgres。现在一切正常。(我已经移动了我在DEV服务器上使用SQL lite的迁移文件夹)所以我只是在服务器上收到红色消息,并非所有迁移都已应用。

但下次如果我进行迁移,我将遇到麻烦。

我的出路是什么?

2 个答案:

答案 0 :(得分:1)

迁移主要用于向后兼容,以及跟踪/版本化模型/数据库的更改。如果你真的不关心历史变化等,那么你可以删除迁移目录并执行:

python manage.py makemigrations <app_name>

这会创建初始迁移(例如从干净的平板开始) - 然后继续前进,您可以跟踪前进的历史迁移。更多关于this can be read here

现在,当您运行迁移时,您可以执行

python manage.py migrate <app_name> --fake-initial

伪造initial migration

现在可能是对应用程序进行版本控制的好时机

答案 1 :(得分:1)

使用版本控制。

您不是第一个删除重要文件的开发人员,但由于版本控制系统(也称为版本控制系统),通常恢复时间不到一秒。请停止其他所有内容并安装和使用Git,Mercury或Subversion之一。

不要使用FTP

完全是。我的意思是完全没有安全感。始终使用SFTP

不要将sqlite3用于本地,而其他数据库用于生产

sqlite不强制执行严格的类型检查。另一方面,Postgresql非常讲究它。另外,sqlite只有postgresql上的一部分功能。最后但并非最不重要的是,不同的RDBMS具有不同的复杂性。如果您在本地使用另一个,并且在生产中使用另一个,则在部署到实时

时,您的代码总是有可能中断

不使用迁移文件进行管理

只要您的数据库与您的模型同步,这不是一个很大的损失。

如果您的数据库与模型不同步,则可以使用

./manage.py inspectdb

重新创建代表db中实际结构的本地模型。然后你在生成的模型上进行迁移和迁移(如karthik所解释的那样)。

然后用您的实时模型替换它并再次执行该步骤。