3

我正在修复遗留系统的一些问题,并且遇到了一个令我惊讶的是没有尽早发现的问题。我正在运行 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 字段,以便用户可以有多个问题,并且一个问题可以被多个用户使用。

4

2 回答 2

3

原因很可能是

关系“password_user_answered_questions_id_s”不存在

就像错误消息告诉我们一样。你知道PostgreSQL 如何处理标识符吗?

此外,序列通常命名为*_seq。结尾的字母不见了?


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

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

大胆强调我的。似乎您应该稍微缩短标识符。

于 2012-04-27T17:03:54.820 回答
0

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

  1. python manage.py makemigrations myappname
  2. python manage.py migrate myappname
于 2016-08-01T15:13:36.230 回答