繁体   English   中英

列在Django 1.6.5中不存在

[英]Column does not exist in django 1.6.5

我在Django 1.6.5中有一个应用程序。 我有一个模型,其中删除了一个字段,添加了另一个字段,然后升级了第三个字段。 现在,当我们在管理面板中转到模型时,我收到消息:

ProgrammingError at /admin/app/subscription/
column app_subscription.enabled does not exist

命令python manage.py syncdb不起作用。

如果您没有明确要求,Django(希望)不会修改您的数据库架构。 syncdb命令可以完美地工作,但是(如所记录的那样)它将仅创建尚不存在的表(并且在models中未标记为在外部进行管理)。

因此,这里主要有三个选项:

  1. 手动删除表并重新运行syncdb 这意味着您将丢失我们的所有数据,因此这几乎不是“解决方案”
  2. 手动更改您的数据库架构。 您不会丢失数据,但是在部署应用程序的所有地方都必须重复相同的(手动)操作...如果仅将其安装在本地工作站上可能还可以,那么这不是可靠的专业产品-级别选项。
  3. 使用South (似乎已安装,因为您确实有migrate命令可用。

请注意,解决方案3暗示您确实为应用创建了迁移文件,如此处所述: http : //south.readthedocs.org/en/latest/tutorial/part1.html#the-first-migration

碰巧,我在django 1.9.x中遇到了相同的问题,在django应用程序中添加了一个新字段,该字段触发了与您上述相同的错误。 我使用以下命令登录到dbshell环境

python manage.p dbshell # I know some use ./manage.py

并通过在dbshell运行以下命令以删除表来删除我的所有表

your_psql=# drop schema public cascade;

这将删除所有表(请小心,因为您可能会丢失数据,请放在那里以保留数据!),并且在执行此命令告诉您所有已删除后,您会立即收到一条消息。 之后立即运行以下命令以再次创建架构,否则服务器将无法运行:

your_psql=# create schema public;

然后做

python manage.py makemigrations # you might not need this, and 
python manage.py migrate

然后您就可以出发了。

我知道这个答案可能很晚了,但我希望它能对某人有所帮助。

干杯

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM