Thread: sqlstate is HY000 for not_null_violation
Hi, I am using psqlodbc08.02.0400 with unixODBC connecting to PostgreSQL8.2.4. For not_null_violation error, like db=# create temp table ooid (oid_ integer not null); CREATE TABLE db=# insert into ooid values(NULL); ERROR: null value in column "oid_" violates not-null constraint The sqlstate returned by SQLGetDiagRec() is HY000, the message is SQLSTATE=HY000;SQLCODE=7;ERROR: null value in column "oid_" violates not-null constraint;Error while executing the query which should be SQLSTATE=23502 according to http://www.postgresql.org/docs/8.2/static/errcodes-appendix.html Any idea to get 23502 instead of HY000? Greeatings, ning
ning wrote: > Hi, > > I am using psqlodbc08.02.0400 with unixODBC connecting to PostgreSQL8.2.4. > > For not_null_violation error, like > db=# create temp table ooid (oid_ integer not null); > CREATE TABLE > db=# insert into ooid values(NULL); > ERROR: null value in column "oid_" violates not-null constraint > > The sqlstate returned by SQLGetDiagRec() is HY000, the message is > SQLSTATE=HY000;SQLCODE=7;ERROR: null value in column "oid_" violates > not-null constraint;Error while executing the query > > which should be SQLSTATE=23502 according to > http://www.postgresql.org/docs/8.2/static/errcodes-appendix.html > > Any idea to get 23502 instead of HY000? Which protocol option are you setting ? You should set the 7.4+ protocol option. regards, Hiroshi Inoue
Thank you Inoue-san, By setting in odbc.ini, Protocol = 7.4 I got sqlstate=23502 from SQLGetDiagRec() as expected. Since I am using psqlodbc08.02.0400 with unixODBC connecting to PostgreSQL8.2.4, I think that setting Protocol=8.2.4 is also reasonable, but that is not true, I got "HY000" by setting to 8.2.4. I cannot find information about available protocol numbers, could you help to give a clue? Greetings, ning On Sun, Aug 23, 2009 at 6:26 PM, Hiroshi Inoue<inoue@tpf.co.jp> wrote: > ning wrote: >> >> Hi, >> >> I am using psqlodbc08.02.0400 with unixODBC connecting to PostgreSQL8.2.4. >> >> For not_null_violation error, like >> db=# create temp table ooid (oid_ integer not null); >> CREATE TABLE >> db=# insert into ooid values(NULL); >> ERROR: null value in column "oid_" violates not-null constraint >> >> The sqlstate returned by SQLGetDiagRec() is HY000, the message is >> SQLSTATE=HY000;SQLCODE=7;ERROR: null value in column "oid_" violates >> not-null constraint;Error while executing the query >> >> which should be SQLSTATE=23502 according to >> http://www.postgresql.org/docs/8.2/static/errcodes-appendix.html >> >> Any idea to get 23502 instead of HY000? > > Which protocol option are you setting ? > You should set the 7.4+ protocol option. > > regards, > Hiroshi Inoue >
ning wrote: > Thank you Inoue-san, > > By setting in odbc.ini, > Protocol = 7.4 > I got sqlstate=23502 from SQLGetDiagRec() as expected. > > Since I am using psqlodbc08.02.0400 with unixODBC connecting to > PostgreSQL8.2.4, I think that setting Protocol=8.2.4 is also > reasonable, but that is not true, I got "HY000" by setting to 8.2.4. > I cannot find information about available protocol numbers, could you > help to give a clue? The protocol option means FE/BE protocol and must be 6.2, 6.3, 6.4 or 7.4 . regards, Hiroshi Inoue