sql >> データベース >  >> RDS >> PostgreSQL

DjangoViewのPostgresにユーザー/アカウントテーブルを追加する

    私のお金はスペルミスの名前です。エラーメッセージであなたが持っていることに気づきました

    OmniCloud_App_accounts
    OmniCloud_App_user
    

    2番目の表は単数を使用しています。たまたまこのような2番目のテーブルはありません:

    OmniCloud_App_users
    

    また、PostgreSQLで大文字と小文字が混在する識別子を使用することは、SOでの評判の大きな源です。それは遅かれ早かれあなたを噛むでしょう。その愚かさの犠牲者はここでは常連です。この名前のテーブルは多分-そして"OmniCloud_App_user"の二重引用符を忘れた どこか?

    omnicloud_app_user
    

    それか、ユーザーを保存するトランザクションがまだコミットされていないかのどちらかです。ユーザーのみを作成し(アカウントはまだ作成していません)、テーブル内の適切なデータベースに適切なIDで配置されているかどうかを確認できますか?

    編集:問題を診断するためのツール

    知っている そのユーザーが作成されている場合、問題は次のとおりです。外部キー制約user_id_refs_id_468fbcec324e93d2 適切な場所を見ますか?同じデータベース?同じスキーマ?同じテーブル?

    データベースに存在するテーブルを見つけるには、次のクエリを試してください(必要な権限がある場合):

    SELECT n.nspname AS schema_name
          ,c.relname AS table_name
          ,c.relhastriggers
          ,c.reltuples
    FROM   pg_catalog.pg_class c
    LEFT   JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace
    WHERE  c.relname ~~* '%user%'
    AND    c.relkind = 'r'
    AND    nspname <> 'pg_catalog';
    

    名前に「user」が含まれるすべてのスキーマのすべてのテーブルを大文字と小文字を区別せずに表示します。さらに、テーブルにトリガーがある場合(可能性がある 問題の原因)とその中にある行数(ANALYZEによって更新された推定値) )。あなたにリードを与えるかもしれません...

    メタコマンド\dを使用することもできます 標準コマンドラインクライアント(インタラクティブターミナル)の psql

    テストケースを実行し、postgresサーバーに取得したすべてのログを記録させます。その目的のためにこのパラメータを設定します:

    set log_statement = 'all';
    

    マニュアルロギングパラメータについて 。

    パラメータの設定方法 に関するマニュアル 。



    1. 2つの$.postメソッドをうまく使用する方法

    2. MYSQLでのパーセンタイル/ランクの効率的な割り当て

    3. SQLDeveloperの列値の非表示の二重引用符を削除する方法

    4. テーブル間のMySQL自動インクリメント