ホームページ >データベース >mysql チュートリアル >テーブルが存在するにもかかわらず、PostgreSQL クエリが「リレーションが存在しません」というメッセージで失敗するのはなぜですか?
データベース クエリを実行すると、テーブル名が正しいように見えても、「リレーションが存在しません」エラーが発生します。
このエラーは通常、テーブル名の参照方法に問題があることを示しています。 最も一般的な原因は、大文字と小文字の区別の問題です。 PostgreSQL はテーブル名に関して大文字と小文字を区別します。
たとえば、次のクエリは失敗します:
<code class="language-sql">CREATE TABLE "SF_Bands" ( ... ); SELECT * FROM sf_bands; -- ERROR!</code>
解決策は、二重引用符を使用してテーブル名の大文字と小文字を正確に一致させることです:
<code class="language-sql">SELECT * FROM "SF_Bands";</code>
別のアプローチには、search_path
を変更することが含まれます。この設定は、PostgreSQL がデータベース内のオブジェクト (テーブルなど) を検索する順序を決定します。 テーブルのスキーマを検索パスに追加すると、スキーマを明示的に指定せずにテーブルを参照できるようになります。
現在の検索パスを確認するには:
<code class="language-sql">SHOW search_path;</code>
showfinder
スキーマを追加するには (実際のスキーマに置き換えます):
<code class="language-sql">SET search_path TO showfinder,public;</code>
検索パスを調整した後、小文字の名前を使用してテーブルをクエリできます。
<code class="language-sql">SELECT * FROM sf_bands;</code>
search_path
の構成に関する包括的な詳細については、PostgreSQL の公式ドキュメントを参照してください: https://www.php.cn/link/d7323519970d0e3680ef5fa1edfe0e56
以上がテーブルが存在するにもかかわらず、PostgreSQL クエリが「リレーションが存在しません」というメッセージで失敗するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。