【问题标题】:Why is django manage.py syncdb failing to create new columns on my development server?为什么 django manage.py syncdb 无法在我的开发服务器上创建新列?
【发布时间】:2012-06-25 17:02:40
【问题描述】:

我正在尝试从生产服务器创建一个开发服务器,我可以从中测试新的想法。

我通过使用 Postgres 的 db_dump 转储创建了生产服务器数据库的副本,然后将转储导入新数据库。

然后我复制了我的生产 django 目录并更改了所有 .py 文件以在我的 import 语句中引用 server_debug. 而不是 server

使用管理界面更改某些数据的工作原理是只有开发服务器会更改其数据。

但是,当我尝试在我的开发服务器中的models.py 中添加一个新字段时,manage.py syncdb 无法创建它。

是否有什么我忽略的东西可能导致manage.py 引用我的生产服务器而不是我的开发服务器?

【问题讨论】:

    标签: django django-models django-manage.py


    【解决方案1】:

    syncdb 不会触及已经存在的表。您需要重置应用程序(如果您不关心数据,最简单),手动修改表(更多的是快速破解)或使用迁移应用程序和版本您的模型 - 例如South

    【讨论】:

    • 也许我在我的问题中使用了错误的术语,但是如果我在我的 models.py 文件中创建一条新数据,说:middle_name = models.CharField(max_length = 50) 那我不需要运行@987654324 @将此列添加到数据库?这是在一个预先存在的类中。
    • 查看文档我发现你是对的。我现在对此完全感到困惑。我认为 Django 的功能之一是它不需要一个人来实际通过并将 SQL 直接提供给您的数据库。我可以理解如果一个人改变一列 Django 将不知道如何处理现有数据。但是如果我要添加一个新列,为什么 Django 不能直接为我发出命令?
    猜你喜欢
    • 1970-01-01
    • 2015-01-13
    • 2012-05-27
    • 2018-07-23
    • 2017-12-16
    • 2014-06-07
    • 1970-01-01
    • 2011-01-06
    • 2013-08-29
    相关资源
    最近更新 更多