我删除了Django迁移,但出现了一些错误

时间:2018-06-29 07:42:25

标签: python django database

我删除所有迁移文件

find . -path "*/migrations/*.py" -not -name "__init__.py" -delete
find . -path "*/migrations/*.pyc"  -delete

然后删除数据库并创建新的清除对象。但是当我尝试创建初始迁移并生成数据库模式时:

python manage.py makemigrations

我有错误

django.db.utils.ProgrammingError: (1146, "Table 'buzz_local.api_userprofile' doesn't exist")

为什么? 我不需要任何迁移文件,因为我们需要重新创建当前数据库

2 个答案:

答案 0 :(得分:0)

有时候我们也有同样的问题。如果迁移文件夹中的单个文件被删除,则可能会造成破坏。我们做了以下事情:

正如您提到的那样,您正在创建一个新数据库,您可能要做的就是

  1. 删除migrations文件夹内的所有文件,剩下__init__.py文件(如果删除,只需创建一个名为__init__.py的新空文件)。

然后尝试makemigrations命令。大多数情况下,这是可行的,因为所有迁移文件都已重新生成。

  1. 如果上述方法不起作用,则必须手动创建表。这有点麻烦,因为您必须在此类表上手动创建每个字段。如果您不知道如何手动创建(或担心表会混乱),则可以检查以前的Django项目的db并检查为不同类型的每个字段提供了哪些属性。

如果正确地实现了步骤,则步骤2不会太混乱。就像您已将ImageField定义为(例如:在MySQL中)

image = ImageField(upload_to='/pics', null=True, blank=True)

在数据库中,它只是一个VARCHAR字段

'image' varchar(100) DEFAULT NULL,

此方法在我们的两个项目中对我们都有效,再次,我想说的是,如果您要创建新的数据库,则可以尝试此方法。如果在现有数据库上工作,则可能会很麻烦。

答案 1 :(得分:0)

就我而言;我已经解决了逐个迁移应用程序的问题。同样在我的一个应用程序中,我不得不在第一次迁移时注释掉中心模型(该模型对其他模型有很多外键),然后为该应用程序第二次迁移重新激活它。

我不确定这是否适用于任何情况,但从技术上讲应该如此。希望这会有所帮助。