python
data_error
ai_generated
true
sqlalchemy.exc.OperationalError: (sqlite3.OperationalError) database is locked
ID: python/flask-sqlalchemy-commit-failure
80%Fix Rate
85%Confidence
0Evidence
2025-05-18First Seen
Version Compatibility
| Version | Status | Introduced | Deprecated | Notes |
|---|---|---|---|---|
| 3.9 | active | — | — | — |
| 3.10 | active | — | — | — |
Root Cause
Flask 应用尝试写入 SQLite 数据库时,数据库文件被其他进程锁定
generic中文
Flask 应用尝试写入 SQLite 数据库时,数据库文件被其他进程锁定
Workarounds
-
90% success 使用连接池并设置超时
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///data.db?timeout=10'
-
95% success 迁移到支持并发的数据库
app.config['SQLALCHEMY_DATABASE_URI'] = 'postgresql://user:pass@localhost/db'
Dead Ends
Common approaches that don't work:
-
使用并发写入而不加锁
90% fail
SQLite 不支持并发写入,会导致数据损坏
-
删除数据库文件并重新创建
80% fail
数据丢失