Python django 1.6.5中不存在列
我在Django 1.6.5中有一个应用程序。我有一个模型,我删除了一个字段,添加了另一个字段,然后升级了第三个字段。当我们现在转到管理面板中的模型时,我得到消息:Python django 1.6.5中不存在列,python,django,database,syncdb,Python,Django,Database,Syncdb,我在Django 1.6.5中有一个应用程序。我有一个模型,我删除了一个字段,添加了另一个字段,然后升级了第三个字段。当我们现在转到管理面板中的模型时,我得到消息: ProgrammingError at /admin/app/subscription/ column app_subscription.enabled does not exist 命令python manage.py syncdb不起作用。Django(希望如此)不会修改您的数据库架构,如果您没有明确要求它的话。syncdb命
ProgrammingError at /admin/app/subscription/
column app_subscription.enabled does not exist
命令python manage.py syncdb
不起作用。Django(希望如此)不会修改您的数据库架构,如果您没有明确要求它的话。syncdb
命令工作正常,但(如文档所述)它只会创建尚不存在的表(并且在您的模型中未标记为外部管理)
因此,这里主要有三种选择:
手动删除表格并重新运行syncdb
。这意味着您将丢失我们的所有数据,因此这几乎不是一个“解决方案”
手动更改数据库架构。你不会丢失数据,但你必须在应用程序部署的任何地方重复相同的(手动)操作。。。如果它只安装在您的本地工作站上,这可能还可以,否则它就不是一个可靠的专业生产级别选项
使用South
(这似乎是安装的,因为您有一个migrate
命令可用
请注意,解决方案#3意味着您确实为您的应用程序创建了迁移文件,如本文所述:碰巧我在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
你准备好出发了
我知道这个答案可能会很晚,但我希望它会帮助别人
干杯@Scironic我收到一个错误:python manage.py migrate app应用程序“app”似乎没有使用迁移。
您是否检查了项目的所有文件中是否没有对enabled
字段的引用?(尤其是在admin.py
中)@IgorPomaranskiy否references@mark:迁移不是自动创建的。也是字符串形式(例如,在字段名列表中)