Cannot simply use PostgreSQL table name ("relation does not exist")
Postgres process query different from other RDMS. Put schema name in double quote before your table name like this, "SCHEMA_NAME"."SF_Bands"
I had problems with this and this is the story (sad but true) :
If your table name is all lower case like : accounts you can use:
select * from AcCounTs
and it will work fineIf your table name is all lower case like :
accounts
The following will fail:select * from "AcCounTs"
If your table name is mixed case like :
Accounts
The following will fail:select * from accounts
If your table name is mixed case like :
Accounts
The following will work OK:select * from "Accounts"
I dont like remembering useless stuff like this but you have to ;)
Put the dbname parameter in your connection string. It works for me while everything else failed.
Also when doing the select, specify the your_schema
.your_table
like this:
select * from my_schema.your_table
From what I've read, this error means that you're not referencing the table name correctly. One common reason is that the table is defined with a mixed-case spelling, and you're trying to query it with all lower-case.
In other words, the following fails:
CREATE TABLE "SF_Bands" ( ... );
SELECT * FROM sf_bands; -- ERROR!
Use double-quotes to delimit identifiers so you can use the specific mixed-case spelling as the table is defined.
SELECT * FROM "SF_Bands";
Re your comment, you can add a schema to the "search_path" so that when you reference a table name without qualifying its schema, the query will match that table name by checked each schema in order. Just like PATH
in the shell or include_path
in PHP, etc. You can check your current schema search path:
SHOW search_path
"$user",public
You can change your schema search path:
SET search_path TO showfinder,public;
See also http://www.postgresql.org/docs/8.3/static/ddl-schemas.html