pgref.dev/sqlite/errors/SQLITE_IOERR_RDLOCK
SQLITE_IOERR_RDLOCKERRORTier 2 — Caution⚠️ MEDIUM confidence

I/O error checking reserved read lock

Category: I/O ErrorVersions: 3.0+

🔴 Production Risk Error

Medium — transaction cannot start.

What this means

SQLITE_IOERR_RDLOCK (2314) is returned when the OS reports an error while SQLite checks whether a reserved read lock is held on the database file.

Why it happens

  1. 1OS error during fcntl() lock check.
  2. 2Filesystem does not support advisory lock queries.

How to reproduce

Lock state checks during transaction begin.

trigger — this will ERROR
# Surfaces as disk I/O error during BEGIN
sqlite3.DatabaseError: disk I/O error

Fix 1

Why this works

Use local filesystems that support POSIX advisory locks.

Fix 2

Why this works

Retry the operation.

Sources

📚 Official docs: https://www.sqlite.org/rescode.html#ioerr_rdlock

🔧 Source ref: sqlite3.h — SQLITE_IOERR_RDLOCK = 2314

Confidence assessment

⚠️ MEDIUM confidence

Stable.

See also

⚙️ This error reference was generated with AI assistance and reviewed for accuracy. Examples are provided to illustrate common scenarios and may not cover every case. Always test fixes in a development environment before applying to production. Spotted an error? Suggest a correction →