django 做 migrate 时 表已存在的处理

Posted zmdcomeon

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了django 做 migrate 时 表已存在的处理相关的知识,希望对你有一定的参考价值。

在开发web的时候,如果是以前已存在的项目,项目下载下来后,为了使用测试库的数据,会直接将整个测试库(如sqlite3)拿到本机来。这种情况下,如果执行的顺序不对,很容易在执行migrate的时候出现数据库已存在的错误: 

django.db.utils.OperationalError: (1050, "Table ‘xxx‘ already exists")

要处理这种情况,如果是数据表都已经存在了,在migrate时直接使用 --fake-initial 来处理

python manage.py migrate --fake-initial
 如果是因有外键存在,需要初始化多个表,且有部分数据表已创建,又有部分未创建,可以使用 --fake <appname>来处理

python manage.py migrate --fake <appname>

以上是关于django 做 migrate 时 表已存在的处理的主要内容,如果未能解决你的问题,请参考以下文章

PyTest-Django 在缺少 django_migration 表时失败

Django数据初始化方法

将表迁移到 db 时出错...表已存在

迁移数据库(Laravel)时出错:表已存在

Heroku:Django Migration 版本未在部署中运行

django重新创建数据库和表