我删除所有迁移文件
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")
为什么? 我不需要任何迁移文件,因为我们需要重新创建当前数据库
答案 0 :(得分:0)
有时候我们也有同样的问题。如果迁移文件夹中的单个文件被删除,则可能会造成破坏。我们做了以下事情:
正如您提到的那样,您正在创建一个新数据库,您可能要做的就是
migrations
文件夹内的所有文件,剩下__init__.py
文件(如果删除,只需创建一个名为__init__.py
的新空文件)。然后尝试makemigrations
命令。大多数情况下,这是可行的,因为所有迁移文件都已重新生成。
如果正确地实现了步骤,则步骤2不会太混乱。就像您已将ImageField定义为(例如:在MySQL中)
image = ImageField(upload_to='/pics', null=True, blank=True)
在数据库中,它只是一个VARCHAR字段
'image' varchar(100) DEFAULT NULL,
此方法在我们的两个项目中对我们都有效,再次,我想说的是,如果您要创建新的数据库,则可以尝试此方法。如果在现有数据库上工作,则可能会很麻烦。
答案 1 :(得分:0)
就我而言;我已经解决了逐个迁移应用程序的问题。同样在我的一个应用程序中,我不得不在第一次迁移时注释掉中心模型(该模型对其他模型有很多外键),然后为该应用程序第二次迁移重新激活它。
我不确定这是否适用于任何情况,但从技术上讲应该如此。希望这会有所帮助。