在Django-South中,Pesky"Table'my_table'已经存在"

JEE*_*ND0 6 django django-south

在Django-South:我改变了我已成功为myapp运行初始迁移但出于某种原因,在我对模型进行了更改并转到

./manage.py schemamigration myapp --auto
./manage.py migrate myapp
Run Code Online (Sandbox Code Playgroud)

我得到了很多追溯结束:

(1050, "Table 'my_table' already exists")
Run Code Online (Sandbox Code Playgroud)

经过大量的谷歌搜索,我发现并尝试了这个:

./manage.py migrate myapp --fake
Run Code Online (Sandbox Code Playgroud)

然后我继续迁移它,但无济于事; 同样的错误.

有什么建议?

Ian*_*Ian 7

我刚刚得到同样的错误,并通过搜索找到了这个问题.

我的问题是我用--initial标志创建的第二次迁移,即

$ ./manage.py startapp foo
$ ./manage.py schemamigration --initial foo
$ ./manage.py migrate foo
Run Code Online (Sandbox Code Playgroud)

...对foo做一些改变......

$ ./manage.py schemamigration --initial foo
Run Code Online (Sandbox Code Playgroud)

(哎呀!)

$ ./manage.py migrate foo
Run Code Online (Sandbox Code Playgroud)

...我收到错误,迁移失败,因为在第二次迁移中,South正在尝试创建已创建的表.

在我的迁移文件夹中:

$ ls foo/migrations
0001_initial.py   0002_initial.py
Run Code Online (Sandbox Code Playgroud)

删除第二次迁移并使用正确的--auto标志重新导出第二次迁移:

$ rm foo/migrations/0002_initial.py
$ ./manage.py schemamigration --auto foo
$ ./manage.py migrate foo
Run Code Online (Sandbox Code Playgroud)

成功!

可能有其他事情导致此错误,但那是我的坏事!