Question

I used pg_restore to load my postgres db with a dump file. I connected to my db with my user :

sudo -u arajguru psql dump

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

Now I was able to see all the newly created tables:

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)

But when I try to fire a select * query, it gave me this error:

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

What can be the reason for this error? Please help.

Was it helpful?

Solution

You created your tables with double quotes, and now the names are case sensitive.

As documented in the manual "Approvals" and Approvals are two different names.

Now that you created the table names in a case sensitive manner, you have to use those dreaded double quotes always.

select * 
from "Approvals";

As a general advice: never use double quotes in SQL.

Licensed under: CC-BY-SA with attribution
Not affiliated with dba.stackexchange
scroll top