Postgres: erreur de relation n'existe pas

14

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.

Ayushi Rajguru
la source

Réponses:

24

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

Comme indiqué dans le manuel "Approvals" et Approvalssont 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: n'utilisez jamais de guillemets doubles dans SQL.

un cheval sans nom
la source
1
Merci! Travaille maintenant. Comment saviez-vous que les tableaux ont été créés avec des guillemets doubles?
Ayushi Rajguru,
1
@AyushiRajguru: parce que la "Liste des tables" les montre en majuscules / minuscules. La seule façon d'y parvenir est d'utiliser des guillemets doubles (comme
indiqué
ahh, j'ai eu la même chose avec les journaux vs "journaux" merci youuuuu <3
csomakk