PostgreSQL クエリの失敗: 「関係が存在しません」
SQL クエリを実行しようとすると、エラー「relation '」が発生する場合があります。関係名' は存在しません。」このエラーは、PostgreSQL が現在のデータベース内で指定されたリレーション (通常はテーブルまたはビュー) を見つけることができないことを示します。
問題の原因
一般的な理由の 1 つこのエラーは、大文字と小文字が正しくない関係名を参照していることです。クエリで小文字の「sf_bands」が使用されているのに、リレーション名に大文字と小文字が混在している場合 (「SF_Bands」など)、クエリは失敗します。 PostgreSQL は識別子の処理において大文字と小文字を区別するため、大文字と小文字の混合を維持する必要があります。
解決策 1: 識別子に二重引用符を使用する
との関係を正しく参照するには大文字と小文字が混在する場合は、二重引用符 (") を使用して識別子を区切ります。例:
SELECT * FROM "SF_Bands" LIMIT 10;
解決策 2: スキーマ検索パスを設定する
リレーションがデフォルト以外のスキーマに属している場合は、スキーマ検索パスを調整して以下を含めることができます。関連するスキーマ。検索パスは、PostgreSQL がリレーションを解決するときにスキーマを検索する順序を定義します。 names.
検索パスにスキーマを追加するには、次のコマンドを実行します。
SET search_path TO <schema_name>,public;
この場合、
例
の場合「showfinder」という名前のスキーマに「sf_bands」という名前の関係がある場合、次のように検索パスを調整してクエリを変更できます。
SET search_path TO showfinder,public; SELECT * FROM sf_bands LIMIT 10;
以上がPostgreSQL「リレーションが存在しません」: クエリが失敗する理由と修正方法?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。