无法在 SQLite DB 上执行 UPDATE 语句:数据库已锁定 [重复]
Posted
技术标签:
【中文标题】无法在 SQLite DB 上执行 UPDATE 语句:数据库已锁定 [重复]【英文标题】:Cannot execute UPDATE statement on SQLite DB: database is locked [duplicate] 【发布时间】:2020-01-09 12:03:54 【问题描述】:我无法在部署到 Azure 应用服务 (Linux) 的 Flask 应用中执行 UPDATE
语句。它说:
Database is Locked.
SELECT
语句按预期执行。在本地机器上按预期工作 UPDATE
语句。
我已尝试更改隔离级别(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()
【问题讨论】:
你是否缺少缩进..? 【参考方案1】:检查其他类似问题 (OperationalError: database is locked),用户的普遍反应似乎是他们的错误代码没有正确关闭会话。大容量应用程序最终会超出 SQLite 的并发能力,但如果您怀疑您的应用程序不是这种情况,请尝试仔细检查您的代码,以防它无法正确处理(关闭)会话。
重写代码以减少并发并确保数据库 交易是短暂的。
【讨论】:
我已经重新启动了应用服务,并确保这是数据库的第一条 SQL 语句。事件结果是“数据库被锁定”。以上是关于无法在 SQLite DB 上执行 UPDATE 语句:数据库已锁定 [重复]的主要内容,如果未能解决你的问题,请参考以下文章