添加模型字段后如何解决“ProgrammingError:Column不存在”

时间:2015-02-15 22:21:32

标签: django

我添加了一个字段' nearbyzips'到我的模型,现在我无法克服这些错误。这些是我采取的步骤。

manage.py sqlclear accounts

manage.py syncdb

我从这两个命令中得不到任何错误,但只要运行manage.py check_permissions,我就会得到:

ProgrammingError:  column accounts.my_profile.nearbyzips" does not exist

我还安排南方(尽管我不想使用它)绝望,并按照教程将现有项目转换为使用South。这不起作用,所以我从已安装的应用程序中删除了南,并删除了我的帐户文件夹中的迁移文件夹。

我对'manage.py sqlclear帐户'的理解是它将删除实际的数据库表,然后syncdb将重建它。这似乎没有做它应该做的事情否则,它会消除我会假设的错误。我所做的只是添加一个模型字段,这应该不是那么困难。

有没有人有任何其他建议?我已经阅读了关于这个主题的无数堆栈溢出帖子,我读过的唯一真正的解决方案就是使用我已经完成的sqlclear,所以我担心自己已​​经走到了尽头至于解决这个问题。

2 个答案:

答案 0 :(得分:5)

manage.py sqlclear只打印SQL DROP运算符,但不执行它们。要真正删除应用程序表,您需要执行这些DROP:

python manage.py sqlclear accounts | python manage.py dbshell

要添加列而不删除表,可以执行sql命令,然后将字段定义复制到ALTER TABLE运算符:

echo "ALTER TABLE accounts_my_profile ADD COLUMN nearbyzips CHAR(100);" | python manage.py dbshell

答案 1 :(得分:1)

我解决了,如果有人有同样的问题:

  1. 您必须使用heroku pg:reset DATABASE_URL

  2. 完全重置您的heroku数据库
  3. 执行heroku run python manage.py syncdb

  4. 执行heroku run python manage.py migrate