django - 添加模型字段后如何解决 "ProgrammingError: Column does not exist"

标签 django

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

manage.py sqlclear accounts

manage.py syncdb

我从这两个命令中没有收到任何错误,但是只要运行 manage.py check_permissions,我就会得到:
ProgrammingError:  column accounts.my_profile.nearbyzips" does not exist

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

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

有没有人有其他建议?我已经阅读了无数关于这个主题的堆栈溢出帖子,我正在阅读的唯一真正的解决方案是使用我已经完成的 sqlclear,所以我担心就解决这个问题而言我已经走到了死胡同。

最佳答案

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

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

要在不删除表的情况下添加列,您可以执行 sql命令,然后将字段定义复制到 ALTER TABLE运算符(operator):
echo "ALTER TABLE accounts_my_profile ADD COLUMN nearbyzips CHAR(100);" | python manage.py dbshell

关于django - 添加模型字段后如何解决 "ProgrammingError: Column does not exist",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28531889/

相关文章:

python - django:添加用户弹出窗口。缺少字段(名字、姓氏)

python - 跳过 django FormWizard 上的步骤

django:如何将此 View 迁移到基于类的通用 View 等效项?

Django 的 forms.Form 与 forms.ModelForm

python - Django 使用正确的编码上传和处理 CSV 文件

python - Django休息框架: Including multiple choice fields in Serializer

python - Django QuerySet.filter(property__regex ='^This not autocomplete' ) 的 VSCode 自动完成

python - 'str' 对象没有属性 'get'

django - 如何将计算字段添加到 django admin inline

python - 检测自 Django 模型中的日期起是否已过设定时间