Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

ERROR: column of relation does not exist PostgreSQL ,Unable to run insert query

Hi I am trying to insert into a table tester3 it fails when i use the syntax

insert into tester3 (UN0, UN1) values ( 1, 'jishnu1');

but

insert into tester3 values ( 1, 'jishnu1');

is working fine.

mydb=# CREATE TABLE tester3
mydb-#    (
mydb(#     "UN0" integer,
mydb(#     "UN1" VARCHAR(40)
mydb(#    );
CREATE TABLE
mydb=# insert into tester3 (UN0, UN1) values ( 1, 'jishnu1');
ERROR:  column "un0" of relation "tester3" does not exist
mydb=# \d tester3
           Table "public.tester3"
 Column |         Type          | Modifiers
--------+-----------------------+-----------
 UN0    | integer               |
 UN1    | character varying(40) |

I think i am missing something very trivial, I tried someother column names some of them works fine and some are not working. I am confused. Does PostgreSQL have restriction in column names for which works the 1st syntax of insert query works?


Edit :

Checkout Girdon Linoff answer , as Frank Heikens pointed out the other column names which were working without quotes were in lower case.

Lower case column is the standard within PostgreSQL and also works without quotes

like image 282
Jishnu Prathap Avatar asked Jun 26 '15 11:06

Jishnu Prathap


People also ask

What is a Postgres relation?

PostgreSQL is a relational database management system ( RDBMS ). That means it is a system for managing data stored in relations. Relation is essentially a mathematical term for table.

Does not exist Pgsql?

PostgreSQL EXISTS examples The NOT EXISTS is opposite to EXISTS . It means that if the subquery returns no row, the NOT EXISTS returns true. If the subquery returns one or more rows, the NOT EXISTS returns false.


2 Answers

If you define the columns with double quotes, then you generally need to use them when you refer to the column:

insert into tester3 ("UN0", "UN1")
     values ( 1, 'jishnu1');

I would suggest you remove the double quotes from the column names in the CREATE TABLE statement.

You don't need the double quotes if the name is all lower case.

like image 127
Gordon Linoff Avatar answered Oct 20 '22 07:10

Gordon Linoff


try this using double quotes to your column names

insert into tester3 ("UN0", "UN1") values ( 1, 'jishnu1');
like image 9
Ameya Deshpande Avatar answered Oct 20 '22 07:10

Ameya Deshpande