python data_error ai_generated true

sqlalchemy.exc.OperationalError: (sqlite3.OperationalError) database is locked

ID: python/flask-sqlalchemy-commit-failure

Also available as: JSON · Markdown · 中文
80%Fix Rate
85%Confidence
0Evidence
2025-05-18First Seen

Version Compatibility

VersionStatusIntroducedDeprecatedNotes
3.9 active
3.10 active

Root Cause

Flask 应用尝试写入 SQLite 数据库时,数据库文件被其他进程锁定

generic

中文

Flask 应用尝试写入 SQLite 数据库时,数据库文件被其他进程锁定

Workarounds

  1. 90% success 使用连接池并设置超时
    app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///data.db?timeout=10'
  2. 95% success 迁移到支持并发的数据库
    app.config['SQLALCHEMY_DATABASE_URI'] = 'postgresql://user:pass@localhost/db'

Dead Ends

Common approaches that don't work:

  1. 使用并发写入而不加锁 90% fail

    SQLite 不支持并发写入,会导致数据损坏

  2. 删除数据库文件并重新创建 80% fail

    数据丢失