python
data_error
ai_generated
true
SQLAlchemy 操作错误:数据库被锁定
sqlalchemy.exc.OperationalError: (sqlite3.OperationalError) database is locked
ID: python/flask-sqlalchemy-commit-failure
80%修复率
85%置信度
0证据数
2025-05-18首次发现
版本兼容性
| 版本 | 状态 | 引入 | 弃用 | 备注 |
|---|---|---|---|---|
| 3.9 | active | — | — | — |
| 3.10 | active | — | — | — |
根因分析
Flask 应用尝试写入 SQLite 数据库时,数据库文件被其他进程锁定
English
Flask 应用尝试写入 SQLite 数据库时,数据库文件被其他进程锁定
解决方案
-
90% 成功率 使用连接池并设置超时
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///data.db?timeout=10'
-
95% 成功率 迁移到支持并发的数据库
app.config['SQLALCHEMY_DATABASE_URI'] = 'postgresql://user:pass@localhost/db'
无效尝试
常见但无效的做法:
-
使用并发写入而不加锁
90% 失败
SQLite 不支持并发写入,会导致数据损坏
-
删除数据库文件并重新创建
80% 失败
数据丢失