Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/350.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python django 1.6.5中不存在列_Python_Django_Database_Syncdb - Fatal编程技术网

Python 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命

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

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:迁移不是自动创建的。也是字符串形式(例如,在字段名列表中)