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