Maison >base de données >tutoriel mysql >Pourquoi ma requête PostgreSQL échoue-t-elle avec « La relation n'existe pas » même si la table existe ?

Pourquoi ma requête PostgreSQL échoue-t-elle avec « La relation n'existe pas » même si la table existe ?

Susan Sarandon
Susan Sarandonoriginal
2025-01-20 13:41:09833parcourir

Why Does My PostgreSQL Query Fail with

Échec de la requête PostgreSQL : erreur « La relation n'existe pas »

Problème

L'exécution d'une requête de base de données entraîne une erreur « la relation n'existe pas », même lorsque le nom de la table semble correct.

Solution

Cette erreur indique généralement un problème avec la façon dont vous faites référence au nom de la table. La cause la plus fréquente est un problème de sensibilité à la casse. PostgreSQL est sensible à la casse en ce qui concerne les noms de tables.

Par exemple, cette requête échouera :

<code class="language-sql">CREATE TABLE "SF_Bands" ( ... );

SELECT * FROM sf_bands;  -- ERROR!</code>

La solution consiste à faire correspondre précisément la casse du nom de votre table, en utilisant des guillemets :

<code class="language-sql">SELECT * FROM "SF_Bands";</code>

Utilisation du chemin de recherche de schéma

Une autre approche consiste à modifier votre search_path. Ce paramètre dicte l'ordre dans lequel PostgreSQL recherche les objets (comme les tables) dans votre base de données. L'ajout du schéma de la table au chemin de recherche vous permet de référencer la table sans indiquer explicitement le schéma.

Pour vérifier votre chemin de recherche actuel :

<code class="language-sql">SHOW search_path;</code>

Pour ajouter le schéma showfinder (remplacez par votre schéma actuel) :

<code class="language-sql">SET search_path TO showfinder,public;</code>

Après avoir ajusté le chemin de recherche, vous pouvez interroger la table en utilisant le nom en minuscule :

<code class="language-sql">SELECT * FROM sf_bands;</code>

Pour des détails complets sur la configuration search_path, consultez la documentation officielle de PostgreSQL : https://www.php.cn/link/d7323519970d0e3680ef5fa1edfe0e56

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