If you look at the error message it is "Could not do a physical-order read to fetch next row"
If you get a lock error on Insert this is "Could not insert new row into the table."
It looks as though the set isolation to dirty read is not being applied before you do a read.
I am not familiar with accessing Informix From Java.
From ESQL/C (SQL embedded in C) the Set Isolation applies to a database connection.
It stays the same until it is changed.
Is the isolation not being set to dirty read - or is the connection being re-established in some way ?
Also in ESQL/C there is a structure which gives further information - sqlca. Īs this accessible to Java or are you simply given a thrown Exception ?
The ISAM/Code (found in sqlerrd[1] tells you excatly what is causing the error (lock or corrupt database)).
The full text of your error is
-244 Could not do a physical-order read to fetch next row.
The database server cannot read the disk page that contains a row of a
table. Check the accompanying ISAM error code for more information. A
hardware problem might exist, or the table or index file might have
been corrupted. Unless the ISAM error code or an operating-system
message points to another cause, run the bcheck or secheck utility to
verify file integrity.
Though in my experience it is always a lock.