Informix Error -348
-348 Could not read a row from the table.
While the database server was trying to fetch a row from a table, it received an unexpected error. Check the accompanying ISAM error code for more detailed information on the cause. Possible causes include hardware errors and lock conflicts.
Oninit® Troubleshooting Guidance
Reasons / Common Causes
-348 is the read-side counterpart of -346: an unexpected error occurs while fetching a row,
rather than while updating one. As with -346, the official guidance points to the accompanying
ISAM error code as the real diagnostic path, with hardware errors and lock conflicts called out
as the two most common underlying causes.
- A locking conflict — another session holds a lock incompatible with the read being attempted (relevant for certain isolation levels/lock modes).
- Hardware-level errors — disk I/O failures affecting the dbspace/chunk holding the table's data.
- A more specific underlying condition identified only by the accompanying ISAM error code.
Solutions / Resolution
- Check the accompanying ISAM error code first, per the official guidance, for the specific underlying reason.
- Check for lock contention on the table being read, particularly if using a locking
isolation level (
SET ISOLATION TO REPEATABLE READ/CURSOR STABILITYand similar) where reads themselves can conflict with other sessions' locks:SELECT l.tabname, l.owner, s.username FROM sysmaster:syslocks l, sysmaster:syssessions s WHERE l.owner = s.sid AND l.tabname = 'orders'; - Check for hardware/disk-level errors in the online log and OS logs around the same timestamp.
Examples
Checking for lock contention affecting a read
SELECT l.tabname, l.owner, s.username FROM sysmaster:syslocks l, sysmaster:syssessions s
WHERE l.owner = s.sid AND l.tabname = 'orders';
-- relevant especially under isolation levels where reads can
-- conflict with other sessions' locks
Diagnostic Checks
- Read the accompanying ISAM error code for the specific underlying reason.
- Check
sysmaster:syslocksfor lock contention on the table. - Check the online log / OS logs for hardware or I/O errors at the same timestamp.
Related Errors / Related Topics
- -346 — "Could not update a row in the table." The write-side counterpart of this same class of unexpected storage-engine-level failure.
- -347 — "Could not open table for exclusive access." Another table-access failure, at the level of obtaining exclusive access for DDL rather than reading row data.
Check the ISAM error code first — the same underlying causes (locking and hardware) apply here as
for the update-side error -346.