Error database

RuntimeError: Your system has an unsupported version of sqlite3. Chroma requires sqlite3 >= 3.35.0

Your Python's built-in sqlite3 is older than ChromaDB needs — common on older Linux distros and hosted platforms. Install pysqlite3-binary and swap it in, or upgrade the Python environment.

The message you saw
RuntimeError: Your system has an unsupported version of sqlite3. Chroma requires sqlite3 >= 3.35.0

By Updated

The error

Output
RuntimeError: Your system has an unsupported version of sqlite3. Chroma requires sqlite3 >= 3.35.0.
Please visit https://docs.trychroma.com/troubleshooting#sqlite to learn how to upgrade.

What it means

ChromaDB — a popular vector database for RAG projects — stores its data in SQLite and depends on features added in SQLite 3.35. Python's sqlite3 module links against the SQLite library that shipped with your OS or Python build. On older systems that library predates 3.35, so Chroma refuses to start.

Why it happens

The SQLite version is baked into the platform, not pip-installable in the normal way. Debian 11, Ubuntu 20.04, Amazon Linux 2, some older container base images and certain hosted notebook/app platforms (this error is a Streamlit Cloud classic) all ship SQLite older than 3.35. Your code and your Chroma install are fine; the floor under them is old.

How to fix it

1. Check what you have.

python
import sqlite3
print(sqlite3.sqlite_version)

Anything below 3.35.0 confirms the diagnosis.

2. The documented workaround: pysqlite3-binary plus a module swap.

bash
pip install pysqlite3-binary

Then, at the very top of your entry-point file, before anything imports chromadb:

python
__import__("pysqlite3")
import sys
sys.modules["sqlite3"] = sys.modules.pop("pysqlite3")

This substitutes a modern bundled SQLite for the system one, process-wide. It is the fix Chroma's own troubleshooting guide prescribes, and the standard move on platforms you cannot upgrade. The lines must run first — put them in the main script, not buried in a late import.

3. The cleaner fix where you control the platform: newer base. Upgrade the OS or base image (Debian 12+, Ubuntu 22.04+), or use a Python built against a modern SQLite — conda environments bundle their own:

bash
conda install python=3.12 sqlite

In Docker, switching to a current python:3.12-slim image removes the problem at the root.

4. Or sidestep with a different vector store. For learning-scale projects, FAISS or a hosted vector store avoids the SQLite dependency entirely — a reasonable dodge when you cannot modify the platform and the swap trick is unavailable.

How to prevent it

Pin modern base images for anything that uses Chroma, and add the sqlite3.sqlite_version check to your setup verification. On restrictive hosted platforms, apply the pysqlite3 swap preemptively — it is two lines and saves the deploy-time surprise.