Erreurs de sensibilité à la casse PostgreSQL et de requête SQL : "la colonne... n'existe pas"
L'exécution de jointures SQL peut parfois entraîner une erreur frustrante "la colonne 'nom_colonne' n'existe pas". Cela provient souvent d'une incompatibilité de cas entre le nom de la colonne dans votre requête et le nom réel, sensible à la casse, défini dans le schéma de la base de données. PostgreSQL, contrairement à certains autres systèmes de bases de données, y est particulièrement sensible.
Le problème :
Considérez cette requête défaillante :
<code class="language-sql">select sim.id as idsim, num.id as idnum from main_sim sim left join main_number num on (FK_Numbers_id=num.id);</code>
Le message d'erreur pointe vers la colonne "FK_Numbers_id" inexistante dans la table main_sim
.
La solution :
La colonne existe, mais la bonne majuscule est cruciale. La nature sensible à la casse de PostgreSQL nécessite une correspondance précise. La requête corrigée est :
<code class="language-sql">select sim.id as idsim, num.id as idnum from main_sim sim left join main_number num on ("FK_Numbers_id" = num.id);</code>
Pourquoi cela fonctionne :
Mettre le nom de la colonne "FK_Numbers_id"
entre guillemets doubles oblige PostgreSQL à le traiter littéralement, quelle que soit la casse. Sans les guillemets, PostgreSQL interprète le nom de la colonne selon ses règles de casse par défaut, conduisant à l'erreur. L'utilisation de guillemets doubles garantit une correspondance exacte avec la définition du schéma de base de données.
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!