【问题标题】:"Relation not found" error when using Django without syncdb在没有 syncdb 的情况下使用 Django 时出现“找不到关系”错误
【发布时间】:2014-02-20 13:37:45
【问题描述】:

我有一个带有简单模型的小型 Django 项目。但是,我没有通过python manage.py syncdb 创建我的数据库,而是决定手动创建它并通过Meta 映射表,如下所示

class Item(models.Model):
    name = models.CharField(max_length=50)

    class Meta:
            managed = False                                                   
            db_table = 'ITEM'

但这不起作用。当我启动开发服务器并运行主视图时,Django 抛出一个错误,指出名为ITEM 的关系在数据库中不存在,而实际上它确实存在。

我进行了一些研究,但找不到遇到此类问题的人。有没有办法让它工作?

【问题讨论】:

  • @DanielRoseman 是的。这很奇怪。
  • 会不会是大小写问题? Postgres 将表名转换为小写,除非查询有引号:binodsblog.blogspot.com/2011/02/…
  • @CantucciHQ 哇,真是令人惊讶,我从不怀疑这可能是问题所在。请回答问题,以便我接受:D
  • @Mauren 这是 SQL 标准行为,顺便说一句,尽管 SQL 规范说如果没有引用,名称应该是 大写
  • @Mauren Oracle 并不以严格遵循规范而闻名;-)。我不喜欢这种特殊的 SQL 规范行为。

标签: python django postgresql


【解决方案1】:

db_table 名称应为小写:

db_table = 'item'

【讨论】:

    【解决方案2】:

    Postgres 将表名转换为小写字母,除非查询有引号。例如:

    http://binodsblog.blogspot.com/2011/02/postgresql-is-case-sensitive.html

    通常这些细节会被 ORM 抽象出来,但如果你不使用 syncdb,你就必须管理它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-08-11
      • 1970-01-01
      • 2019-11-04
      • 2017-01-11
      • 2015-06-01
      • 1970-01-01
      • 2018-04-06
      • 1970-01-01
      相关资源
      最近更新 更多