2011-03-16 50 views

回答

2

this exchange占地面积我很质疑:

如果你手动修改数据库,南都不会注意到 - 的 跟踪的是哪个版本的数据库是 south_migrationhistory表的唯一途径,所以如果你背后捣鼓它,你的责任是修理它的 。

我最终什么事做了评论指出,我有问题下降,做一个schemamigration模型,创建一个我放弃了(所以南有东西砸),migrate ING的空没有列的表格,然后取消注释该模型,schemamigrationmigrate再次。有点烦人,不仅仅是丢下桌子,而且还好啊。

+0

是否有可能在mysql中创建无列表? – 2013-10-17 09:45:00

27

有相同的问题。不知道这部作品在任何情况下,但这里是我所做的:

  1. 评论了“南方”从INSTALLED_APPS
  2. 运行manage.py执行syncdb
  3. 取消注释“南下”在INSTALLED_APPS
  4. 运行管理。 py migrate

Voila!

您的里程可能会有所不同....

+0

您在执行此操作时也需要重命名migrations文件夹,我只是以下划线作为前缀。在步骤1和2之间执行此操作,然后在步骤4之前重命名为'迁移' – 2015-02-26 15:26:21

39

这是一个相当晚回应,但对于谁都会碰到同样的问题(像我一样)的人。

通常下降由南管理应用程式的db_tables你应该使用:

python manage.py migrate appname zero 

但是,如果你在DB手动降到他们让南知道它

python manage.py migrate appname zero --fake 

而且当然要重新创建表格

python manage.py migrate appname 
+4

对于'migrate appname zero'! – 2012-12-18 10:33:35

+11

只有当你丢掉_every_表 – 2013-01-16 21:51:37

+0

+1时,这才有效帮助我在我的开发服务器上工作。谢谢! – tatlar 2013-05-30 16:14:32

1

确保已应用所有迁移: python manage.py migrate

告诉Django创建表,因为他们是在你的模型:python manage.py syncdb

告诉南一切是它应该是:python manage.py migrate appname --fake

这假设没有在的任何改变你的自创建上次迁移以来,型号为

0

我知道这个问题已经过时,但我只是遇到了这个问题,并认为我会发布我的解决方案,以防万一这有助于任何人。

  1. 进入您的models.py数据库所在的文件夹。
  2. 将整个班级从models.py文件中删除。
  3. 运行./manage.py schemamigration appname --auto(这将创建另一个迁移,其中South将识别删除此表)。您可能需要在数据库中重新创建一张空白表格,以便South可以看到它。
  4. 运行migration,表应该从数据库中删除。
  5. 将表格类重新粘贴回models.py文件中的位置。
  6. 运行./manage.py架构迁移appname --auto。南应该拿起桌子,并允许你迁移
  7. 运行./manage.py迁移appname和南应重新添加到您的数据库表...与列等等,但没有数据,明显。 :)
+0

哈哈很好,这正是我的答案所说的,但一步一步的布局。 – Claudiu 2013-11-23 05:40:57

+0

噢,真好!对不起,我没有看到你回答。很高兴我们都至少达到了同样的决议。 :) – jaredgilmore 2013-11-25 18:16:59