ホームページ >データベース >mysql チュートリアル >列が存在しているにもかかわらず、PostgreSQL クエリが「列 \'Continent\' が存在しません」というメッセージで失敗するのはなぜですか?

列が存在しているにもかかわらず、PostgreSQL クエリが「列 \'Continent\' が存在しません」というメッセージで失敗するのはなぜですか?

Susan Sarandon
Susan Sarandonオリジナル
2025-01-20 19:58:12650ブラウズ

Why Does My PostgreSQL Query Fail with

PostgreSQL データベース エラー: 列「Continent」が存在しません

問題の背景:

Java アプリケーションは、pgAdmin 4 に列「Continent」が存在することを確認したにもかかわらず、データベースにクエリを実行したときに、列「Continent」が特定のテーブルに存在しないというエラーを検出しました。クエリは、この列から null 以外の値を選択しようとします。

問題診断:

  • pgAdmin 4 によって、「Continent」列が「network.countries」テーブルに存在することが確認されました。
  • クエリは、アプリケーションがスペルやセマンティック エラーを除いて列名とテーブル名を正しく取得していることを示しています。
  • エラー メッセージは、別のスキーマまたはテーブルを使用して列名を参照する必要がある可能性があることを示しています。

解決策:

クエリ内で列名を二重引用符で囲むことでこの問題を解決します:

<code class="language-sql">SELECT "Continent"
FROM network.countries
...</code>

PostgreSQL では、列名に特殊文字が含まれている場合、またはキーワードと競合する場合、列名を二重引用符で囲む必要があります。この場合、「Continent」は PostgreSQL の予約キーワードであるため、引用符で囲む必要があります。

追加メモ:

  • pgAdmin 4 でクエリを直接実行すると、インターフェイスが引用符を自動的に処理するため、同じエラーが発生しない可能性があります。
  • クエリで「countries.Continent」を使用することも機能する可能性がありますが、これにより「countries」パターンへの依存が生じます。列名を二重引用符で囲むと、テーブルのスキーマに関係なく機能する、より一般的なソリューションが提供されます。

以上が列が存在しているにもかかわらず、PostgreSQL クエリが「列 \'Continent\' が存在しません」というメッセージで失敗するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。