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 没用,需要上级目录的权限也是。

相关推荐
q***46444 分钟前
离线安装 Nginx
运维·数据库·nginx
我科绝伦(Huanhuan Zhou)1 小时前
SQL进阶必备:从计算字段到多表联结,让查询效率翻倍!
数据库·sql
i***48612 小时前
Redis重大版本整理(Redis2.6-Redis7.0)
java·数据库·redis
r***86982 小时前
Redis 6.2.7安装配置
前端·数据库·redis
是Judy咋!2 小时前
Mongodb---副本集搭建(hashed分片)
数据库·mongodb·centos
q***14642 小时前
MySQL 批量插入详解:快速提升大数据导入效率的实战方法
大数据·数据库·mysql
Unstoppable222 小时前
八股训练营第 21 天 | Redis的数据类型有哪些?Redis是单线程的还是多线程的,为什么?说一说Redis持久化机制有哪些?
数据库·redis·缓存·八股
q***61503 小时前
【数据库】MySQL的安装与卸载
数据库·mysql·adb
无心水3 小时前
【分布式利器:Redis】Redis基本原理详解:数据模型、核心特性与实战要点
数据库·redis·缓存·数据模型·i/o多路复用·redis高并发·redis基本原理
大头an3 小时前
Redis内存碎片深度解析:从动态整理到核心运维实践
数据库·redis