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

SQLite执行.databases命令提示写入只读数据库错误,只读数据库查询是否需要写入权限?

解决SQLite只读数据库操作权限问题

嘿,作为SQLite新手碰到这个问题太正常啦,我来给你掰扯清楚为啥会报错,以及怎么正确操作:

为啥执行.databases会报错?

你可能以为只读查询完全不需要写入权限,但SQLite默认启动时,哪怕是执行看似只读的命令(比如.databases),它也会尝试做这些事:

  • 获取数据库的写锁(用于确保查询一致性)
  • 在数据库所在目录创建临时文件(比如存储查询中间结果的临时表)

而你的/nix/var/nix/db/目录大概率没有给当前用户写入权限,所以就触发了"attempt to write a readonly database"的错误。

正确操作步骤

要避免这个问题,关键是用只读模式启动sqlite3客户端,具体操作如下:

  1. 执行带-readonly参数的启动命令:
sqlite3 -readonly /nix/var/nix/db/db.sqlite
  1. 进入客户端后,再执行.databases或者查询语句就不会报错了:
SQLite version 3.35.5 2021-04-19 18:32:05
Enter ".help" for usage hints.
sqlite> .databases
# 这里会正常显示你的数据库信息
sqlite> SELECT name FROM sqlite_master WHERE type='table'; # 示例:查询所有表名

额外提示

  • 如果你只是想查询数据,-readonly模式完全够用,它会禁用所有写入操作,改用内存存储临时数据,彻底避开权限问题。
  • 不要随意给数据库目录加写入权限(除非你明确需要),保持只读状态更安全,也符合你查看只读数据库的初衷。

内容的提问来源于stack exchange,提问作者lord.didger

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.28 08:42:27