Postgres: Relação não existe erro


14

Eu usei o pg_restore para carregar meu banco de dados do postgres com um arquivo de despejo. Liguei-me ao meu db com o meu usuário:

sudo -u arajguru psql dump

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

Agora eu pude ver todas as tabelas recém-criadas:

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)

Mas quando tento disparar uma consulta select *, ele me dá este erro:

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

Qual pode ser o motivo desse erro? Por favor ajude.

Respostas:


24

Você criou suas tabelas com aspas duplas e agora os nomes diferenciam maiúsculas de minúsculas.

Conforme documentado no manual "Approvals" e Approvalsexistem dois nomes diferentes.

Agora que você criou os nomes das tabelas de uma maneira que diferencia maiúsculas de minúsculas, é necessário usar sempre essas temidas aspas duplas.

select * 
from "Approvals";

Como um conselho geral: nunca use aspas duplas no SQL.


11
Obrigado! Trabalhando agora. Como você sabia que as tabelas foram criadas com aspas duplas?
Ayushi Rajguru

11
@ AyushiRajguru: porque a "Lista de tabelas" as mostra com Maiúsculas / minúsculas. A única maneira de conseguir isso é usar aspas duplas (conforme documentado no manual )
a_horse_with_no_name

ahh, eu tive o mesmo com logs vs "logs" obrigado youuuuu <3
csomakk 05/01
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.