Django有关models迁移以及项目迁移后的问题

关于Django的迁移,需要知道的是大体上是针对于models的迁移,此前提为该models所在模块已经在settings文件中注册过,这样才能让Django发现它的存在。
继续回到正题,在此之后主要使用下列命令对其进行操控,在用户根目录下,即于manage.py同级目录下

  • 该命令主要用于生成迁移文件,即在migrations目录下生成一个个的版本迁移文件,在此时迁移文件还未被执行

python manage.py makemigrations

  • 此命令即执行最新的迁移,可以一次性的执行多个迁移文件,还可以指定app进行迁移,只需在命令最后加上注册的app的名字即可

python manage.py migrate

但问题到了这里还只是刚刚开始,在我这里发生的一个状况是项目需要迁移换到另一台机器中执行,而一部分数据库中的数据需要使用sql导入以保留数据,在项目迁移后运行了起来,但是我并没有执行models迁移,因为只要配置的数据库的参数正确,就可以直接使用,然而事情到这还没有结束……

在很多天之后,因为需求变化需要对项目进行功能扩展,于是乎新建了model继续生成迁移,迁移是可以生成的但是却无法执行迁移,错误是表已经存在,遂上网查得到解决方法是在命令后加上参数 --fake强行迁移

python manage.py migrate --fake

这样执行确实没有报错,但是问题却是新的models并没有被迁移,随后把迁移文件和数据库中的迁移记录表中对应的记录删除,重新迁移,仍然不行,问题在于目前已使用的数据库已经生成,所以解决问题的方案有两种

  1. 删掉数据库,如果你的数据库并没有什么有价值的数据,或者删除代价很小
  2. 将迁移记录保持在项目迁移时的状态,然后迁移,如果报错则fake强行迁移,迁移完成后再添加新的models,此时即可执行正常迁移

你可能感兴趣的:(Python,Django)