首页 > 解决方案 > 无法在 SQLite DB 上执行 UPDATE 语句:数据库已锁定

问题描述

我无法UPDATE在部署到 Azure 应用服务 (Linux) 的 Flask 应用中执行语句。它说:

Database is Locked.

SELECT语句按预期执行。在本地机器上UPDATE按预期工作语句。

我试图改变isolation_level ( DEFERRED, EXCLUSIVE, IMMEDIATE)。我也尝试过CHMOD在数据文件夹上,但看起来不错。

with sql.connect(connstring) as con:
cur = con.cursor()
cur.execute("Update INNOVATIONPOWER_MESSAGES SET innovative = 0 WHERE id = 21187")
con.commit()

标签: pythonsqliteazureflaskazure-web-app-service

解决方案


检查其他类似问题(OperationalError: database is locked),用户的普遍反应似乎是他们的代码错误,没有正确关闭会话。大容量应用程序最终会超出 SQLite 的并发能力,但如果您怀疑您的应用程序不是这种情况,请尝试仔细检查您的代码,以防它无法正确处理(关闭)会话。

重写代码以减少并发并确保数据库事务是短暂的。


推荐阅读