Maison >base de données >tutoriel mysql >Pourquoi ma requête PostgreSQL échoue-t-elle avec « La colonne « Continent » n'existe pas » malgré l'existence de la colonne ?

Pourquoi ma requête PostgreSQL échoue-t-elle avec « La colonne « Continent » n'existe pas » malgré l'existence de la colonne ?

Susan Sarandon
Susan Sarandonoriginal
2025-01-20 19:58:12625parcourir

Why Does My PostgreSQL Query Fail with

Erreur de base de données PostgreSQL : la colonne 'Continent' n'existe pas

Contexte du problème :

Une application Java a rencontré une erreur lors de l'interrogation de la base de données indiquant que la colonne "Continent" n'existait pas dans une table spécifique, malgré la confirmation que la colonne existait dans pgAdmin 4. La requête tente de sélectionner des valeurs non nulles dans cette colonne.

Diagnostic du problème :

  • Vérifié via pgAdmin 4 que la colonne "Continent" existe bien dans la table "network.countries".
  • La requête montre que l'application obtient correctement les noms de colonnes et de tables, à l'exclusion des erreurs d'orthographe ou de sémantique.
  • Le message d'erreur implique que les noms de colonnes devront peut-être être référencés à l'aide d'un schéma ou d'une table différente.

Solution :

Résolvez ce problème en entourant les noms de colonnes entre guillemets doubles dans la requête :

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

PostgreSQL exige que les noms de colonnes soient placés entre guillemets doubles lorsqu'ils contiennent des caractères spéciaux ou entrent en conflit avec des mots-clés. Dans ce cas, « Continent » est un mot-clé réservé dans PostgreSQL, il doit donc être mis entre guillemets.

Notes supplémentaires :

  • L'exécution de la requête directement dans pgAdmin 4 peut ne pas rencontrer la même erreur, car l'interface gère automatiquement les guillemets.
  • L'utilisation de "countries.Continent" dans la requête peut également fonctionner, mais cela introduit une dépendance au modèle "countries". Placer les noms de colonnes entre guillemets fournit une solution plus générale qui fonctionne quel que soit le schéma dans lequel se trouve la table.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn