意外删除的迁移文件夹(Django 1.8)我的选项是什么?

意外删除的迁移文件夹(Django 1.8)我的选项是什么?,django,postgresql,django-models,django-migrations,Django,Postgresql,Django Models,Django Migrations,我不小心删除了其中一个迁移文件夹,并且没有备份 我有什么选择 DB是postgres。现在一切正常。(我用SQLLite移动了我的开发服务器上的迁移文件夹),所以我在服务器上收到了一条红色消息,并不是所有的迁移都已应用 但下次如果我运行迁移,我将遇到麻烦 我的出路是什么?迁移主要是为了向后兼容,以及对模型/数据库的更改进行跟踪/版本控制。如果你真的不关心历史的变化等等。。然后,您可以删除migrations目录并执行以下操作: python manage.py makemigrations &l

我不小心删除了其中一个迁移文件夹,并且没有备份

我有什么选择

DB是postgres。现在一切正常。(我用SQLLite移动了我的开发服务器上的迁移文件夹),所以我在服务器上收到了一条红色消息,并不是所有的迁移都已应用

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


我的出路是什么?

迁移主要是为了向后兼容,以及对模型/数据库的更改进行跟踪/版本控制。如果你真的不关心历史的变化等等。。然后,您可以删除migrations目录并执行以下操作:

python manage.py makemigrations <app_name>
python manage.py makemigrations

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

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


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

迁移主要是为了向后兼容,以及跟踪/版本控制对模型/数据库的更改。如果你真的不关心历史的变化等等。。然后,您可以删除migrations目录并执行以下操作:

python manage.py makemigrations <app_name>
python manage.py makemigrations

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

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

现在可能是在应用程序上设置版本控制的好时机

使用版本控制。 您不是第一个删除重要文件的开发人员,但通常恢复所需时间不到一秒钟,这要归功于版本控制系统(也称为修订控制系统)。请停止所有其他操作,安装并使用Git、Mercury或Subversion

不要使用FTP 这完全是错误的。我是说完全没有安全感。始终使用SFTP

不要将sqlite3用于本地,而将其他db用于生产 sqlite不强制执行严格的类型检查。另一方面,Postgresql对此非常挑剔。此外,sqlite只有postgresql上的一部分功能。最后但并非最不重要的是,不同的RDBMS有不同的复杂性。如果您在本地使用一个,在生产中使用另一个,那么当您部署到live时,代码总是有可能中断

不使用迁移文件进行管理 只要您的数据库与您的模型保持同步,这并不是一个很大的损失

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

./manage.py inspectdb
重新创建表示数据库中实际结构的本地模型。然后在生成的模型上进行迁移和迁移(如karthik所解释的)

然后将其替换为您的实时型号,然后再次执行该步骤。

使用版本控制。 您不是第一个删除重要文件的开发人员,但通常恢复所需时间不到一秒钟,这要归功于版本控制系统(也称为修订控制系统)。请停止所有其他操作,安装并使用Git、Mercury或Subversion

不要使用FTP 这完全是错误的。我是说完全没有安全感。始终使用SFTP

不要将sqlite3用于本地,而将其他db用于生产 sqlite不强制执行严格的类型检查。另一方面,Postgresql对此非常挑剔。此外,sqlite只有postgresql上的一部分功能。最后但并非最不重要的是,不同的RDBMS有不同的复杂性。如果您在本地使用一个,在生产中使用另一个,那么当您部署到live时,代码总是有可能中断

不使用迁移文件进行管理 只要您的数据库与您的模型保持同步,这并不是一个很大的损失

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

./manage.py inspectdb
重新创建表示数据库中实际结构的本地模型。然后在生成的模型上进行迁移和迁移(如karthik所解释的)


然后将其替换为您的实时模型,然后再次执行该步骤。

视情况而定-您是否有可以取消删除的内容?最终,这将是一次学习经历:始终备份重要内容。不,我是通过ftp备份的。在我的数字海洋账户上。我不知道它在Unix上是如何工作的。我会检查是否有任何回收站选项?视情况而定-你有什么可以取消删除?最终,这将是一次学习经历:始终备份重要内容。不,我是通过ftp备份的。在我的数字海洋账户上。我不知道它在Unix上是如何工作的。我将检查是否有任何回收站的选择那里?