私のお金はスペルミスの名前です。エラーメッセージであなたが持っていることに気づきました
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';
マニュアル
パラメータの設定方法 に関するマニュアル 。