python - 无法在 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()
解决方案
检查其他类似问题(OperationalError: database is locked),用户的普遍反应似乎是他们的代码错误,没有正确关闭会话。大容量应用程序最终会超出 SQLite 的并发能力,但如果您怀疑您的应用程序不是这种情况,请尝试仔细检查您的代码,以防它无法正确处理(关闭)会话。
重写代码以减少并发并确保数据库事务是短暂的。
推荐阅读
- python - 我可以将数组元素从 mongodb 拉到 javascript 吗?
- ruby-on-rails - has_many 通过多态,两边都有别名
- haskell - 没有参数的haskell函数中的where子句
- javascript - Ajax-XHR 加载失败,内部服务器错误 500
- java - 没有 ID 的 Java/Hibernate 查看实体
- umbraco - 是否可以在没有转发器的情况下集成 Log4net 和 Splunk?
- performance - 优化 DAX 在时间范围内有 X 数量或更多
- javascript - 如果它仅取决于输入值而不是输入大小,如何确定 Big-o 复杂度?
- javascript - 创建 JSON 对象更新器
- java - Fargate Java 微服务遇到 java.net.SocketException:连接重置错误