我正在修复遗留系统的一些问题,并且遇到了一个令我感到惊讶的问题是没有及早发现。我正在运行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字段,以便用户可以有多个问题,并且多个用户可以使用一个问题。
答案 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)
问题是你没有同步你的数据库,我想。请执行以下命令:
python manage.py makemigrations myappname
python manage.py migrate myappname