From: Mark C. <mc...@of...> - 2004-07-08 03:08:43
|
I'm getting the exception 'zxJDBC.Error' when attempting to read any more than 2000 rows from a mysql table using jython and the zxJDBC dynamic cursor. See a sample program below. Even executing a query that returns one result, like "SELECT id FROM test1 WHERE id > " + id + " ORDER BY id ASC LIMIT 1" for each row fails with the same problem. The previous emails on this list about this problem did not solve my problem: 1/ the limit does not seem to be dependent on the heap size 2/ I am unable to create a connection of the form: conn.cursor(True, TYPE_FORWARD_ONLY, CONCUR_READ_ONLY) and the "class MySqlDH(FilterDataHandler)" didn't help Possibly relevant details: Jython: 2.1 on java1.4.1 (JIT: jitc) mysql: Ver 12.22 Distrib 4.0.17, for pc-linux (i686) mysql connector: mysql-connector-java-3.0.14 Java: version "1.4.1", Java(TM) 2 Runtime Environment, Standard Edition (build 1.4.1) Classic VM (build 1.4.1, J2RE 1.4.1 IBM build cxia321411-20030930 (JIT enabled: jitc)) Here is a simple program that replicates my problem: ----------------------------------------------------- #!/usr/bin/env jython # # CREATE TABLE test1 ( # id bigint(20) #) Type=InnoDB; # import os from com.ziclix.python.sql import zxJDBC connection = zxJDBC.connect( "jdbc:mysql://localhost/m2db", 'test', 'test', 'com.mysql.jdbc.Driver') try: cursor = connection.cursor(1) i = 1; while i < 3000: cursor.execute("insert into test1 values (?)", [ i ]) i = i + 1 cursor.execute("SELECT id FROM test1") count = 1 while 1: test = cursor.fetchone() print count, test count = count + 1 if test == None: break connection.commit() except zxJDBC.Error, e: print "Exception: class=", e.__class__, "str()=", str(e) ----------------------------------------------------- Any help would be greatly appreciated. Thanks Mark |