如何在收到错误后重做makemigrations?

时间:2016-05-01 20:11:22

标签: django django-migrations django-1.9

首先我运行makemigrations然后我运行了migrate并收到了错误ValueError: The database backend does not accept 0 as a value for AutoField.

所以我继续,修改我的models.py以修复该错误。

现在,当我运行makemigrations重新开始时,它会起作用。然后migrate实际上没有做任何事情,只是再次显示错误。所以那里有一个很糟糕的迁移,然后有一个是正确的。

所以我在Stack Overflow上阅读后尝试运行./manage.py migrate --fake mainapp zero,现在它正在说django.db.utils.OperationalError: (1050, "Table 'mainapp_article' already exists")

我有什么想法可以回到我开始的地方,现在重新尝试makemigrations并从models.py中删除错误?

2 个答案:

答案 0 :(得分:7)

1)确定您上一次成功迁移:

String s = "0CD"; ////HEREs WHATS DIFFERENT
//loop through rows
for(int x = 0; x< values[0].length;x++)
{
//loops through columns
 for(int y = 0; y< values.length;y++)
 { 
   int x = (int)(Math.random()*3); // HEREs WHATS DIFFERENT
   String letter = ""+s.charAt(x); //concatenates
   values[x][y] = letter; // declares.
  }
}

2)然后使用migrate将数据库迁移到指定的迁移点。

./manage.py showmigrations mainapp
[X] 0001_initial
[X] 0002_auto_20160425_0102
[X] 0003_auto_20160426_2022
[X] 0004_auto_20160427_0036

在这个例子中,我假设0003迁移是成功的,而0004则不是。

3)删除迁移文件

 ./manage.py migrate mainapp 0003_auto_20160426_2022

4)运行makemigrations并再次迁移。

答案 1 :(得分:0)

如果你有错误的迁移,你应该删除它并再次生成它。