pg.ddx.io  pgsql-sql@postgresql.org mailing list archive  
help / color / mirror / Atom feed
error codes
3+ messages / 2 participants
[nested] [flat]

* error codes
@ 2008-04-17 08:23 Marcin Krawczyk <jankes.mk@gmail.com>
  2008-04-17 10:43 ` Re: error codes Craig Ringer <craig@postnewspapers.com.au>
  0 siblings, 1 reply; 3+ messages in thread

From: Marcin Krawczyk @ 2008-04-17 08:23 UTC (permalink / raw)
  To: pgsql-sql

Hi guys. Does anyone know the error code for '*currval of sequence * is not
yet defined in this session*' error ? Is there one at all? I am aware
of *others
*code but I'd like to avoid using that.
Thanks in advance.

Regards
mk

^ permalink  raw  reply  [nested|flat] 3+ messages in thread

* Re: error codes
  2008-04-17 08:23 error codes Marcin Krawczyk <jankes.mk@gmail.com>
@ 2008-04-17 10:43 ` Craig Ringer <craig@postnewspapers.com.au>
  2008-04-17 10:51   ` Re: error codes Craig Ringer <craig@postnewspapers.com.au>
  0 siblings, 1 reply; 3+ messages in thread

From: Craig Ringer @ 2008-04-17 10:43 UTC (permalink / raw)
  To: Marcin Krawczyk <jankes.mk@gmail.com>; +Cc: pgsql-sql

Marcin Krawczyk wrote:
> Hi guys. Does anyone know the error code for '/currval of sequence * is
> not yet defined in this session/' error ? Is there one at all?

A quick JDBC test program shows:

ERROR: currval of sequence "customer_id_seq" is not yet defined in this
session (SQLState: 55000)

which, looking up the error code in the docs:

http://www.postgresql.org/docs/current/static/errcodes-appendix.html

turns out to be:

55000	OBJECT NOT IN PREREQUISITE STATE

... which makes sense, but I wouldn't call blindingly and immediately
obvious.



Here's a trivial little utility for running a statement, catching an
error, and reporting the error along with the Pg error code. Sorry for
the horrible formatting (short lines for email).

--- Put in file `JdbcTest.java' ---

import java.sql.SQLException;
import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.DriverManager;

class JdbcTest  {

    public static void main(String[] args)
      throws ClassNotFoundException, InterruptedException, SQLException
    {
        Class.forName("org.postgresql.Driver");
        Connection c =
          DriverManager.getConnection("jdbc://YOUR_PARAMS_HERE");
        try {
            CallableStatement st =
                c.prepareCall("SELECT currval('customer_id_seq')");
            st.execute();
        } catch (SQLException ex) {
            System.out.println(
                "DB error string: " + ex.getMessage()
                 + " (SQLState: " + ex.getSQLState() + ")");
        }
    }
}

---- end ----

You'll need the PostgreSQL JDBC driver.

To compile (assuming you don't use a Java IDE of some sort, but have the
JDK installed) run:

   javac -d /out/dir JdbcTest.java

and to run (all on one line):

java -classpath /path/to/postgresql-8.3-603.jdbc4.jar:/out/dir JdbcTest

where /out/dir is wherever you want the generated .class file to be put.

--
Craig Ringer



^ permalink  raw  reply  [nested|flat] 3+ messages in thread

* Re: error codes
  2008-04-17 08:23 error codes Marcin Krawczyk <jankes.mk@gmail.com>
  2008-04-17 10:43 ` Re: error codes Craig Ringer <craig@postnewspapers.com.au>
@ 2008-04-17 10:51   ` Craig Ringer <craig@postnewspapers.com.au>
  0 siblings, 0 replies; 3+ messages in thread

From: Craig Ringer @ 2008-04-17 10:51 UTC (permalink / raw)
  To: ; +Cc: Marcin Krawczyk <jankes.mk@gmail.com>; pgsql-sql

Craig Ringer wrote:
> Marcin Krawczyk wrote:
>> Hi guys. Does anyone know the error code for '/currval of sequence * is
>> not yet defined in this session/' error ? Is there one at all?
> 
> A quick JDBC test program shows:
> 
> ERROR: currval of sequence "customer_id_seq" is not yet defined in this
> session (SQLState: 55000)

I've just realised I've been doing this a stupid way without thinking
about it. Unsurprisingly it turns out that no Java/JDBC snippets are
required. The much, much easier way to find the error code:

$ psql

... blah blah blah ...

test=# \set VERBOSITY verbose
test=# select currval('test_seq');
ERROR:  55000: currval of sequence "test_seq" is not yet defined in this
session
LOCATION:  currval_oid, sequence.c:644

In retrospect it seems kind of obvious - "surely psql must have way to
show this information, maybe I should look at the manual....".

--
Craig Ringer



^ permalink  raw  reply  [nested|flat] 3+ messages in thread


end of thread, other threads:[~2008-04-17 10:51 UTC | newest]

Thread overview: 3+ messages (download: mbox mbox.gz follow: Atom feed)
-- links below jump to the message on this page --
2008-04-17 08:23 error codes Marcin Krawczyk <jankes.mk@gmail.com>
2008-04-17 10:43 ` Craig Ringer <craig@postnewspapers.com.au>
2008-04-17 10:51   ` Craig Ringer <craig@postnewspapers.com.au>

This inbox is served by DDX for PostgreSQL; see mirroring instructions
for how to clone and mirror all data and code used for this inbox