Sybase throws Exception "there is already another cursor named XXX" when executing a SELECT query in a multi-threaded environment

I am using ApacheMetaModel to Extract data from a Sybase ASE 15.5 database that is installed on a computer running Windows 7. I retrieve data in CSV in a multi-threaded environment. I use these open source libraries

  <dependency> <groupId>com.sybase</groupId> <artifactId>jconn4</artifactId> <version>4.0</version> </dependency> <dependency> <groupId>com.sybase</groupId> <artifactId>DDLGen</artifactId> <version>4.0</version> </dependency> <dependency> <groupId>com.sybase</groupId> <artifactId>dsparser</artifactId> <version>4.0</version> </dependency> 

I get an error when I try to execute a SELECT query. It does not throw an exception for any particular request. It can throw an exception for any table. I am trying to create a query using Apache Meta-model DataContext .

 Query query = dataContext.query().from(table).as("ct").selectAll().toQuery(); dataContext.executeQuery(query).iterator(); 

In the above code, a query of the type will be created:

 SELECT ct."Column1", ct."Column2", ct."Column3", ct."Column4", ct."Column5", ct."Column6", ct."Column7", ct."Column8", ct."Column9", ct."id" FROM schemaowner."tablename" ct 

The following is a stack trace:

 ! com.sybase.jdbc4.jdbc.SybSQLException: There is already another cursor with the name 'jconnect_implicit_134' at the nesting level '0'. ! ! at com.sybase.jdbc4.tds.Tds.processEed(Tds.java:4117) ~[jconn4-4.0.jar:JDK 1.6/jdbcmain/Thu Apr 30 04:18:00 PDT 2015] ! at com.sybase.jdbc4.tds.Tds.nextResult(Tds.java:3207) ~[jconn4-4.0.jar:JDK 1.6/jdbcmain/Thu Apr 30 04:18:00 PDT 2015] ! at com.sybase.jdbc4.tds.Tds.getResultSetResult(Tds.java:3973) ~[jconn4-4.0.jar:JDK 1.6/jdbcmain/Thu Apr 30 04:18:00 PDT 2015] ! at com.sybase.jdbc4.tds.TdsCursor.open(TdsCursor.java:328) ~[jconn4-4.0.jar:JDK 1.6/jdbcmain/Thu Apr 30 04:18:00 PDT 2015] ! at com.sybase.jdbc4.jdbc.SybStatement.executeQuery(SybStatement.java:2604) ~[jconn4-4.0.jar:JDK 1.6/jdbcmain/Thu Apr 30 04:18:00 PDT 2015] ! at com.sybase.jdbc4.jdbc.SybStatement.executeQuery(SybStatement.java:555) ~[jconn4-4.0.jar:JDK 1.6/jdbcmain/Thu Apr 30 04:18:00 PDT 2015] ! at org.eobjects.metamodel.jdbc.JdbcDataContext.execute(JdbcDataContext.java:381) ~[MetaModel-jdbc-3.4.7.jar:na] ! at org.eobjects.metamodel.jdbc.JdbcDataContext.executeQuery(JdbcDataContext.java:438) ~[MetaModel-jdbc-3.4.7.jar:na] ! Causing: org.eobjects.metamodel.MetaModelException: Could not execute query: There is already another cursor with the name 'jconnect_implicit_134' at the nesting level '0'. ! ! at org.eobjects.metamodel.jdbc.JdbcUtils.wrapException(JdbcUtils.java:70) ~[MetaModel-jdbc-3.4.7.jar:na] ! at org.eobjects.metamodel.jdbc.JdbcDataContext.executeQuery(JdbcDataContext.java:444) ~[MetaModel-jdbc-3.4.7.jar:na] 
+6
source share

All Articles