python data_error ai_generated true

SQLAlchemy 操作错误:数据库被锁定

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

ID: python/flask-sqlalchemy-commit-failure

其他格式: JSON · Markdown 中文 · English
80%修复率
85%置信度
0证据数
2025-05-18首次发现

版本兼容性

版本状态引入弃用备注
3.9 active
3.10 active

根因分析

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

English

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

generic

解决方案

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

无效尝试

常见但无效的做法:

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

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

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

    数据丢失