web-dev-qa-db-fra.com

Postgres: erreur de relation n'existe pas

J'ai utilisé pg_restore pour charger ma base de données postgres avec un fichier de vidage. Je me suis connecté à ma base de données avec mon utilisateur:

Sudo -u arajguru psql dump

select current_user;
 current_user 
--------------
 arajguru

Maintenant, j'ai pu voir toutes les tables nouvellement créées:

dump=> \dt
               List of relations
 Schema |       Name        | Type  |  Owner   
--------+-------------------+-------+----------
 public | Approvals         | table | arajguru
 public | Approvers         | table | arajguru
 public | Conditions        | table | arajguru
 public | Entities          | table | arajguru
 public | EntityDefinitions | table | arajguru
 public | Projects          | table | arajguru
 public | Rules             | table | arajguru
 public | run_history       | table | arajguru
(8 rows)

Mais lorsque j'essaie de lancer une requête select *, cela m'a donné cette erreur:

dump=> select * from Approvals;
ERROR:  relation "approvals" does not exist
LINE 1: select * from Approvals;

Quelle peut être la raison de cette erreur? Veuillez aider.

14
Ayushi Rajguru

Vous avez créé vos tableaux avec des guillemets doubles, et maintenant les noms sont sensibles à la casse.

Comme indiqué dans le manuel"Approvals" et Approvals sont deux noms différents.

Maintenant que vous avez créé les noms de table en respectant la casse, vous devez toujours utiliser ces guillemets redoutés.

select * 
from "Approvals";

Comme conseil général: ne jamais utiliser de guillemets doubles en SQL.

23