sqlite3.OperationalError: database is locked python-BaseException错误解决

报错有2种:

  • sqlite3.OperationalError: attempt to write a readonly database
  • sqlite3.OperationalError: database is locked python-BaseException

原因及解决方案:

1、被占用

由于SQLite只支持单线程。SQLite数据库在同一时间只能由一个连接执行写操作。如果有其他进程或程序(如SQLite专家工具、其他Python脚本、数据库管理工具等)正在访问或修改数据库,就可能导致这个错误。

  • ‌检查并关闭所有可能访问数据库的其他程序‌:确保没有其他软件(如SQLite Expert、Navicat、DB Browser等)正在打开或操作同一个数据库文件。

    在出现这个问题时,检查一下是否使用DB Browser同时打开了SQLite。将其关闭,即可解决该问题。

  • ‌在代码中检查并关闭所有数据库连接 ‌:确保在程序执行完毕后,所有数据库连接都已被正确关闭。例如,在Python中,可以使用conn.close()来关闭连接。

2)无权限

一般是运行目录归属不是执行程序用户的,只需要把根目录到db.sqlite3文件的权限改成777即可;

chmod 777 -R /path/to/db.sqlite3

注意这里你查 db.sqlite3 是777 没用,需要上级目录的权限也是。

相关推荐
小天源21 分钟前
智叟云集政策监测技术方案——原文解析、证据提取与可核验摘要
java·服务器·数据库
凤山老林21 分钟前
从零搭建企业 OAuth2 授权中心:Spring Boot 集成 Spring Authorization Server 与
数据库·spring boot·spring
小羊没烦恼!29 分钟前
在.net中读写config文件的各种方法
java·大数据·运维·服务器·前端·数据库·oracle
NocoBase38 分钟前
本周更新|优化及缺陷修复
数据库·人工智能·开源·零代码·无代码
小马不起床1 小时前
Django 后端实战指南_10:用户扩展档案信息表
python·django·sqlite
大侠归来1 小时前
Redis Cluster 的 16384 个槽(Slot)是什么?
数据库·redis·缓存
墨天梦1 小时前
D26_数据库迁移与可复现构建
数据库·oracle
猫咪很可爱2 小时前
Oracle归档自动删除任务失败
数据库·oracle
cccccc语言我来了2 小时前
Linux (11) 进程控制
linux·运维·数据库
杨运交2 小时前
[079][消息模块]基于 Redis Stream 的高可靠消息队列实现——Spring Data Redis 实战解析
数据库·redis·spring