Tuesday, November 15, 2011

DB2 SQL Error: SQLCODE=-204, SQLSTATE=42704

If you get below mentioned error


Exception in thread "main" com.ibm.db2.jcc.b.eo: DB2 SQL Error: SQLCODE=-204, SQLSTATE=42704, SQLERRMC=SCHEMA.TABLE_NAME, DRIVER=3.53.95
        at com.ibm.db2.jcc.b.bd.a(bd.java:676)
        at com.ibm.db2.jcc.b.bd.a(bd.java:60)
        at com.ibm.db2.jcc.b.bd.a(bd.java:127)
        at com.ibm.db2.jcc.b.gm.c(gm.java:2484)
        at com.ibm.db2.jcc.b.gm.d(gm.java:2461)
        at com.ibm.db2.jcc.b.gm.a(gm.java:1962)
        at com.ibm.db2.jcc.t4.db.g(db.java:138)
        at com.ibm.db2.jcc.t4.db.a(db.java:38)
        at com.ibm.db2.jcc.t4.t.a(t.java:32)
        at com.ibm.db2.jcc.t4.sb.h(sb.java:141)
        at com.ibm.db2.jcc.b.gm.bb(gm.java:1933)
        at com.ibm.db2.jcc.b.gm.a(gm.java:2799)
        at com.ibm.db2.jcc.b.gm.a(gm.java:604)
        at com.ibm.db2.jcc.b.gm.executeQuery(gm.java:588)

Possible reason could be Table do not present in that schema. Please make sure that you provide correct schema name and table name. Also check for typo in Table name or Schema name.

I got the above error when i mistakenly passed wrong table name for the schema. Hope it resolved your error.

Exception java.net.ConnectException: Error opening socket to server

If you get below mentioned error

Exception in thread "main" com.ibm.db2.jcc.b.un: [jcc][t4][2043][11550][3.53.95] Exception java.net.ConnectException: Error opening socket to server hostname/10.10.5.5 on port 3,934 with message: Connection timed out. ERRORCODE=-4499, SQLSTATE=08001
        at com.ibm.db2.jcc.b.bd.a(bd.java:319)
        at com.ibm.db2.jcc.b.bd.a(bd.java:337)
        at com.ibm.db2.jcc.t4.xb.a(xb.java:378)
        at com.ibm.db2.jcc.t4.xb.(xb.java:76)
        at com.ibm.db2.jcc.t4.a.x(a.java:263)
        at com.ibm.db2.jcc.t4.b.a(b.java:1789)
        at com.ibm.db2.jcc.b.jb.a(jb.java:530)
        at com.ibm.db2.jcc.b.jb.(jb.java:486)
        at com.ibm.db2.jcc.t4.b.(b.java:310)
        at com.ibm.db2.jcc.DB2SimpleDataSource.getConnection(DB2SimpleDataSource.java:214)
        at com.ibm.db2.jcc.DB2Driver.connect(DB2Driver.java:224)
        at java.sql.DriverManager.getConnection(DriverManager.java:582)
        at java.sql.DriverManager.getConnection(DriverManager.java:185)
Caused by: java.net.ConnectException: Connection timed out
        at java.net.PlainSocketImpl.socketConnect(Native Method)
        at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:333)
        at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:195)
        at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:182)
        at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:366)
        at java.net.Socket.connect(Socket.java:529)
        at com.ibm.db2.jcc.t4.y.run(y.java:34)
        at java.security.AccessController.doPrivileged(Native Method)
        at com.ibm.db2.jcc.t4.xb.a(xb.java:372)
        ... 11 more


As the error suggest, The database server's port is not open to establish connection with your server or local machine hence it is throwing Socket error. Just verify this error by using Telnet command, If this is the case then contact your server administrator to open the port on the destination server.

I am not sure on this, possibly this could be the one reason for the above error.

DB2 SQL Error: SQLCODE=-104, SQLSTATE=42601, SQLERRMC=;;

If you get below mentioned error


Exception in thread "main" com.ibm.db2.jcc.b.eo: DB2 SQL Error: SQLCODE=-104, SQLSTATE=42601, SQLERRMC=;;SCHEMA.TABLE_NAME;END-OF-STATEMENT, DRIVER=3.53.95
        at com.ibm.db2.jcc.b.bd.a(bd.java:676)
        at com.ibm.db2.jcc.b.bd.a(bd.java:60)
        at com.ibm.db2.jcc.b.bd.a(bd.java:127)
        at com.ibm.db2.jcc.b.gm.c(gm.java:2484)
        at com.ibm.db2.jcc.b.gm.d(gm.java:2461)
        at com.ibm.db2.jcc.b.gm.a(gm.java:1962)
        at com.ibm.db2.jcc.t4.db.g(db.java:138)
        at com.ibm.db2.jcc.t4.db.a(db.java:38)
        at com.ibm.db2.jcc.t4.t.a(t.java:32)
        at com.ibm.db2.jcc.t4.sb.h(sb.java:141)
        at com.ibm.db2.jcc.b.gm.bb(gm.java:1933)
        at com.ibm.db2.jcc.b.gm.a(gm.java:2799)
        at com.ibm.db2.jcc.b.gm.a(gm.java:604)
        at com.ibm.db2.jcc.b.gm.executeQuery(gm.java:588)




Possible reason could be SYNTAX error. Please make sure all syntax are correct upto DB2 standard. Verify the syntax of your query. Even don't add  semi-colon (;) at the end of the query.

In this case if you are using DB2 Universal Driver. 

Syntax :

Class.forName("com.ibm.db2.jcc.DB2Driver");
Connection con=DriverManager.getConnection("jdbc:db2://hostname:port/Schema","username","password");


Jar file : db2jcc.jar

To download Jar files : Click here

Monday, November 14, 2011

Security processing failed with reason "24" ("USERNAME AND/OR PASSWORD INVALID"). SQLSTATE=08001

If you get below mentioned error


Exception in thread "main" COM.ibm.db2.jdbc.DB2Exception: [IBM][CLI Driver] SQL30082N  Security processing failed with reason "24" ("USERNAME AND/OR PASSWORD INVALID").  SQLSTATE=08001


        at COM.ibm.db2.jdbc.app.SQLExceptionGenerator.throw_SQLException(Unknown Source)
        at COM.ibm.db2.jdbc.app.SQLExceptionGenerator.check_return_code(Unknown Source)
        at COM.ibm.db2.jdbc.app.DB2Connection.connect(Unknown Source)
        at COM.ibm.db2.jdbc.app.DB2Connection.(Unknown Source)
        at COM.ibm.db2.jdbc.app.DB2Driver.connect(Unknown Source)
        at java.sql.DriverManager.getConnection(Unknown Source)
        at java.sql.DriverManager.getConnection(Unknown Source)


As the error suggest, The login credentials are not matching. Please make sure that user name and password are correct.

Also check for URL. Make sure that all login credentials are correct.

java.lang.UnsatisfiedLinkError: no db2jdbc in java.library.path

If you get below mentioned error


Exception in thread "main" java.sql.SQLException: java.lang.UnsatisfiedLinkError: no db2jdbc in java.library.path
        at COM.ibm.db2.jdbc.app.DB2Driver.(Unknown Source)
        at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
        at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
        at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
        at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
        at java.lang.Class.newInstance0(Class.java:355)
        at java.lang.Class.newInstance(Class.java:308)


Possible reason could be you forgot to add db2java.jar file in classpath. Please cross check if the jar file db2java.jar is added in class path.

Also make sure that driver name is in proper case, as Driver name case sensitive. i.e. COM.ibm.db2.jdbc.app.DB2Driver (Note that COM is in upper case)

To download Jar file : Click here