Dépannage de l'erreur de requête SQL "la colonne n'existe pas"
Lors de l'exécution d'une requête SQL, vous pouvez rencontrer une erreur « la colonne n'existe pas ». Ceci est particulièrement déroutant lorsque la colonne semble exister dans la définition de la table.
Exemple de scène
Considérez la requête suivante :
<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>
Cette requête tente de récupérer les données de deux tables main_sim et main_number en fonction de la relation de clé étrangère FK_Numbers_id. Cependant, lors de l'exécution de la requête, je reçois l'erreur suivante :
<code>ERROR: column "fk_numbers_id" does not exist</code>
Solution
Après avoir vérifié la définition de la table à l'aide de la commande d main_sim
vous remarquerez que la colonne existe, nommée FK_Numbers_id, et non le fk_numbers_id spécifié dans la requête.
<code class="language-sql">dbMobile=# \d main_sim ... FK_Numbers_id | integer | </code>
Explication
Dans ce cas, les noms de colonnes sont sensibles à la casse car la définition de la table utilise des guillemets doubles. Par conséquent, les références de colonnes dans les requêtes doivent également utiliser des guillemets doubles pour correspondre à la casse exacte du nom de colonne.
Requête corrigée
Pour résoudre ce problème, veuillez modifier la requête comme suit :
<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>
Cette requête corrigée utilise des guillemets doubles autour des noms de colonnes dans la clause LEFT JOIN, garantissant une correspondance correcte avec la définition de la table. En ajustant les références de colonnes pour qu'elles correspondent à la casse exacte des noms de colonnes, la requête s'exécutera désormais avec succès.
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!