Erreur "colonne de PostgreSQL n'existe pas": un problème de sensibilité de cas
Un maux de tête postgresql commun est l'erreur "colonne n'existe pas", même lorsque la colonne est clairement définie. Cela découle souvent des problèmes de sensibilité aux cas. Considérez cet exemple:
SELECT Continent
FROM network.countries
WHERE Continent IS NOT NULL
AND Continent ''
LIMIT 5
Cette requête apparemment correcte pourrait retourner:
ERROR: column "continent" does not exist
Hint: Perhaps you meant to reference the column "countries.Continent".
Position: 8
La solution: Naming de colonne précise avec des citations doubles
Le correctif est simple: enferme le nom de la colonne en doubles citations:
SELECT "Continent"
FROM network.countries
WHERE "Continent" IS NOT NULL
AND "Continent" ''
LIMIT 5
En double-cite "continent"
, vous dites explicitement à PostgreSQL de traiter le nom comme une chaîne littérale sensible à la casse, empêchant les interprétations erronées.
Pourquoi les questions à double qualité
PostgreSQL gère généralement les noms de colonne de manière insensible à la cas. Cependant, les noms de colonnes non cités sont souvent convertis en minuscules en interne. Si votre nom de colonne a un cas mixte (comme "continent") et que vous le référez sans citations, PostgreSQL peut rechercher une colonne "Continent" minuscule, conduisant à l'erreur. Double Quotes Assurez une correspondance exacte, résolvant l'ambiguïté.
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3