php – Cannot simply use PostgreSQL table name (relation does not exist)

php – Cannot simply use PostgreSQL table name (relation does not exist)

From what Ive read, this error means that youre not referencing the table name correctly. One common reason is that the table is defined with a mixed-case spelling, and youre 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

I had problems with this and this is the story (sad but true) :

  1. If your table name is all lower case like : accounts
    you can use: select * from AcCounTs and it will work fine

  2. If your table name is all lower case like : accounts
    The following will fail:
    select * from AcCounTs

  3. If your table name is mixed case like : Accounts
    The following will fail:
    select * from accounts

  4. 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 😉

php – 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

Leave a Reply

Your email address will not be published.