我意外删除了其中一个迁移文件夹,但没有备份。
我有什么选择?
DB是postgres。现在一切正常。(我已经移动了我在DEV服务器上使用SQL lite的迁移文件夹)所以我只是在服务器上收到红色消息,并非所有迁移都已应用。
但下次如果我进行迁移,我将遇到麻烦。
我的出路是什么?
答案 0 :(得分:1)
迁移主要用于向后兼容,以及跟踪/版本化模型/数据库的更改。如果你真的不关心历史变化等,那么你可以删除迁移目录并执行:
python manage.py makemigrations <app_name>
这会创建初始迁移(例如从干净的平板开始) - 然后继续前进,您可以跟踪前进的历史迁移。更多关于this can be read here
现在,当您运行迁移时,您可以执行
python manage.py migrate <app_name> --fake-initial
现在可能是对应用程序进行版本控制的好时机
答案 1 :(得分:1)
您不是第一个删除重要文件的开发人员,但由于版本控制系统(也称为版本控制系统),通常恢复时间不到一秒。请停止其他所有内容并安装和使用Git,Mercury或Subversion之一。
完全是。我的意思是完全没有安全感。始终使用SFTP
sqlite不强制执行严格的类型检查。另一方面,Postgresql非常讲究它。另外,sqlite只有postgresql上的一部分功能。最后但并非最不重要的是,不同的RDBMS具有不同的复杂性。如果您在本地使用另一个,并且在生产中使用另一个,则在部署到实时
时,您的代码总是有可能中断只要您的数据库与您的模型同步,这不是一个很大的损失。
如果您的数据库与模型不同步,则可以使用
./manage.py inspectdb
重新创建代表db中实际结构的本地模型。然后你在生成的模型上进行迁移和迁移(如karthik所解释的那样)。
然后用您的实时模型替换它并再次执行该步骤。