You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为什么SQLite执行insert插入命令时会出现与new运算符相关的报错

SQLite报错截图

报错原因

你遇到的是SQLite经典的attempt to write a readonly database(尝试写入只读数据库)报错,可按以下优先级排查修复:

解决方案

  • 检查数据库文件自身权限:确保运行程序的账号对.db数据库文件拥有读写权限
    • Linux/macOS 环境可执行命令 chmod 664 数据库文件路径 赋权,同时确认文件所属用户/用户组和程序运行账号匹配
    • Windows 环境右键点击数据库文件,选择「属性-安全」,给当前运行程序的账号添加「修改」「写入」权限
  • 检查数据库所在文件夹权限:SQLite执行写入操作时需要在同目录生成临时journal文件,因此程序账号对db文件所在的文件夹同样需要读写权限
  • 排查文件占用问题:确认是否有其他进程已经以只读模式打开该数据库,或是上一次程序异常退出导致文件锁未释放,关闭相关占用进程/重启设备即可解除锁限制
  • 检查存储路径合规性:如果数据库放在只读分区、移动存储介质或是系统保护目录(Windows的Program Files、macOS的/System目录、Linux的/root目录等),将数据库迁移到普通用户可读写的普通目录再测试
  • 核对数据库连接配置:确认代码打开数据库时没有手动设置只读参数,以Python为例,正确的可写连接示例如下:
import sqlite3
# 不要添加mode=ro的只读参数配置
conn = sqlite3.connect("example.db")

内容的提问来源于stack exchange,提问作者poorfella

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.10 20:45:02