Files
LinkPort/docs/sqlite.md
T

3.0 KiB
Raw Blame History

本地 SQLite 文件

在侧边栏选择 SQLite 文件,填写 ServicePort 所在机器上已有数据库的绝对路径,例如 C:\data\example.sqlite 或 /var/data/example.db,点击“测试连接 / 刷新表”。页面显示当前内置 SQLite 引擎版本、用户表及视图;选择表后自动生成查询,并可展开查看建表或视图定义。点击“执行查询”读取数据,也可自行输入单条 SELECT 或 WITH 查询。

文件由运行 ServicePort 的系统账号读取;浏览器连接另一台机器时,路径仍指向服务端。此功能只读打开现有 SQLite 3 文件,不创建空库,不上传文件,不接入网关或代理,也不要求数据库用户名和密码。路径、SQL 和结果仅保留在当前页面内存中,离开页面后清空,不加入配置备份、S3 同步或命令审计。加密 SQLite / SQLCipher 文件不支持。正在使用 WAL 的数据库应保留匹配的 WAL/SHM 文件及所需读取权限,不能只复制主文件后期待包含未检查点的数据。

默认返回前 200 行,可设置 1–1000 行,达到上限且仍有数据时显示截断提示;可通过 WHERE、ORDER BY、LIMIT / OFFSET 查询需要的范围。查询超时 5 秒,最多 256 列,SQL 最长 64 KiB,单个 SQLite 值或记录、结果字段内容总量限制为 2 MiB。超过限制报错,不返回看似完整的部分内容。最多列出 1000 个用户表或视图、2 MiB 结构定义;没有用户表时显示空状态。

数据库使用 SQLite mode=ro 和 query_only,查询入口限制单条语句,禁止修改、附加数据库、加载扩展或修改 PRAGMA。与受限关键字同名的表或列可使用双引号标识符。SQL 字符串中的分号和关键字正常处理。查询结果中的整数以十进制字符串传输,避免浏览器丢失 64 位整数精度;NULL 显示为 NULL,BLOB 显示为 Base64;浮点数和文本也以字符串展示。重复列名按位置保留。

接口为 POST /api/v1/tools/sqlite/inspect({"path":"绝对路径"})和 POST /api/v1/tools/sqlite/query(增加 sql、可选 limit)。复用管理会话、CSRF 和本地免登录模式的回环限制;API Token 不允许访问本地数据库文件。响应不缓存,错误保留 SQLite 的查询诊断供排错。

此功能复用现有 SQLite 驱动,不增加依赖或数据库迁移,不改变目标服务及网关配置结构。新增浏览器测试使用 Node.js 内置 node:sqlite 生成隔离数据库,运行测试需要 Node.js 22.13 或更新版本;发布程序无需 Node.js。

验证使用临时生成的真实 SQLite 文件,覆盖文件格式、路径转义、表和视图、64 位整数、NULL、BLOB、空结果、截断、写入拒绝、缺失文件不创建、结果上限、超时和 API 会话/CSRF 校验。浏览器测试覆盖表结构与查询操作、路径切换后的旧响应失效及小屏幕布局。实际全量运行结果见 变更记录。