3

レガシー システムのいくつかの問題を修正していて、問題がすぐに発見されなかったことに驚いています。私は Django 1.3 を実行しており、このアプリケーションの実行に postgres 9.1.3 を使用しています。このシステムは、ユーザーがシステムの残りの部分を使用するための検証システムです。Django ユーザー インターフェイスの一部を使用しますが、ほとんどの場合、独自の「ユーザー」があります。

私の問題は、ユーザーにアカウントの質問をしようとすると発生します (Web サイトのパスワードを忘れた場合と同様)。私がそれをしようとすると、このエラーがスローされます:

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 に答える