Postgres数据库错误:关系不存在

时间:2012-04-27 16:51:21

标签: database django postgresql system legacy

我正在修复遗留系统的一些问题,并且遇到了一个令我感到惊讶的问题是没有及早发现。我正在运行Django 1.3并在运行此应用程序时使用postgres 9.1.3。该系统是用户使用系统其余部分的验证系统。它使用了Django用户界面的一部分,但大部分都有它自己的'用户'。

当我尝试向用户提供他们的帐户问题(类似于忘记网站密码时),我的问题就出现了。当我尝试这样做时会抛出这个错误:

Database Error at admin/password/user

relation "password_user_answered_questions_id_s" does not exist
LINE 1: SELECT CURRVAL('"password_user_quest...
              ^

有谁知道可能导致此错误的原因?我已经尝试重置数据库(不认为它会做任何事情但只是想确定)并且还使用phppgadmin在数据库中探测并发现其他所有内容都正确存储,除了这个。它在分配时使用ManyToMany字段,以便用户可以有多个问题,并且多个用户可以使用一个问题。

2 个答案:

答案 0 :(得分:2)

原因很可能是

  

关系“password_user_answered_questions_id_s”不存在

就像错误消息通知我们一样。你知道PostgreSQL handles identifiers的方式吗?

此外,序列通常命名为 * _ seq 。最后遗失的信件?


关于标识符的最大长度 - 我引用上面链接中的手册:

  

系统使用的标识符不超过NAMEDATALEN-1个字节;   较长的名称可以用命令编写,但是它们会被截断。   默认情况下,NAMEDATALEN为64,因此最大标识符长度为 63   字节。如果这个限制有问题,可以通过改变它来提高   Src / include / pg_config_manual.h中的NAMEDATALEN常量。

大胆强调我的。好像你应该稍微缩短你的标识符。

答案 1 :(得分:0)

问题是你没有同步你的数据库,我想。请执行以下命令:

  1. python manage.py makemigrations myappname
  2. python manage.py migrate myappname