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 ?
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.
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>
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!