无法在 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 语句。

我已尝试更改隔离级别(DEFERREDEXCLUSIVEIMMEDIATE)。我也尝试在数据文件夹上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 语句:数据库已锁定 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

iOS的SQLite利用FMDB进行操作时无法打开数据库

SQLite进阶-17.视图

处理svn不能执行cleanup命令的方法

为啥 UPSERT 执行 DELETE 和 INSERT 而不是 UPDATE (SQLite)

在 Android 上找不到 SQLite db 文件

$ bundle exec rake db:reset 命令提升无法删除 db/development.sqlite3