pgref.dev/sqlite/errors/SQLITE_CANTOPEN_FULLPATH
SQLITE_CANTOPEN_FULLPATHERRORTier 2 — Caution⚠️ MEDIUM confidence

Cannot open — full path resolution failed

Category: File AccessVersions: 3.8.4+

🔴 Production Risk Error

Low — fails at open time, easy to diagnose.

What this means

SQLITE_CANTOPEN_FULLPATH (1294) is returned when SQLite cannot convert a relative database path to an absolute path using the OS-provided realpath() or equivalent.

Why it happens

  1. 1Path contains invalid components or exceeds PATH_MAX.
  2. 2Intermediate directory in the path does not exist.
  3. 3OS-level path resolution failure (e.g., chroot environment).

How to reproduce

sqlite3_open() with a relative path in an environment where path resolution fails.

trigger — this will ERROR
import sqlite3
try:
    conn = sqlite3.connect('nonexistent_dir/sub/my.db')
except sqlite3.OperationalError as e:
    print(e)
sqlite3.OperationalError: unable to open database file

Fix 1

Why this works

Use absolute paths: os.path.abspath("my.db")

Fix 2

Why this works

Ensure all parent directories exist: os.makedirs(os.path.dirname(db_path), exist_ok=True)

Sources

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

🔧 Source ref: sqlite3.h — SQLITE_CANTOPEN_FULLPATH = 1294

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 →