跳转到内容

常见问题排查 ​

English

先确认具体现象,排查对应原因,并按步骤修复。如果文中未列出你遇到的问题,请提交 issue,并说明具体操作步骤与实际表现。

安装与启动 ​

症状原因与解决
在 Intel Mac 上打不开macOS 发布版只为 Apple silicon 构建。在 Intel 上请从源码构建
文档里的快捷键在 Windows 或 Linux 上没反应把 ⌘ 换成 Ctrl:⌘↵ 在那里是 Ctrl+Enter
ducklocal: command not found磁盘映像只安装应用,不安装命令。把可执行文件链接到 PATH即可
窗口开着时终端被占用从终端打开 GUI 会在前台运行。改从“应用程序”启动,或者就把那个终端留给它
历史、设置或已登记的文件不再保存另一个 DuckLocal 正在运行,占用了应用数据文件。退出另一个后重新启动
DuckLocal 上次意外退出它崩溃了,并在日志文件夹里留了一份报告。点 显示报告,附在 issue 里,见存储位置
检查更新失败鼠标悬停看原因:没联网、代理拦截,或下载的文件和校验值不符。点击重试,或者去 GitHub 下载,见检查更新

打开数据 ​

症状原因与解决
指定的路径报 文件不存在路径不存在,或者相对路径的起点和你以为的不一样。用绝对路径最稳妥
文件夹报告没有数据文件里面没有匹配 .csv、.tsv、.txt、.parquet、.json、.ndjson、.jsonl、.xlsx、.xls、.xlsb 或 .ods 的文件
文件夹导入的文件比预期少隐藏条目和符号链接会跳过,一次最多挂载 256 个文件。把子文件夹分开来打开
某个路径意外地作为数据库打开了只要文件存在但不是数据文件,就会当作 DuckDB 数据库打开。打不开时,DuckLocal 会说明原因;如果是在启动时,会退回内存模式。见打开数据库
未挂载 …:当前数据库已有名为 … 的表或视图当前数据库里有一个与已登记文件同名的表或视图。DuckLocal 不会替换它。把其中一个改名或删除,或者从 本地文件 移除该文件后重新打开,让它拿到新名字
无法恢复相对路径 …这个文件是按相对路径登记的,新会话里无法解析。从 本地文件 移除后重新打开
视图名是 sales_2 而不是 sales已有同名的文件或表,新的那个就加了后缀
文件对应的视图不是最新的视图每次查询都会读取文件。如果 CSV 的列结构变了,点侧栏的 刷新 Schema

打开数据库 ​

症状原因与解决
提示说数据库由更新版本的 DuckDB 创建文件的存储格式比 DuckLocal 内置的 DuckDB 能读的更新。在创建该文件的那个 DuckDB 里运行提示中给出的 ATTACH … COPY FROM DATABASE 几行,再打开复制出来的文件。见数据库文件打不开时
提示说数据库来自 DuckDB v0.9 或更早版本用原来的 DuckDB 执行 EXPORT DATABASE 'dir',再在 DuckLocal 里执行 IMPORT DATABASE 'dir'
提示说这是 SQLite 数据库不要直接打开,改用 打开 → 附加数据库… 把它附加进来
提示说这个文件不是 DuckDB 数据库文件它的扩展名不在 DuckLocal 认作数据文件的范围内,于是被当作数据库尝试打开。把扩展名改成支持的格式,或者在 SQL 里读取,例如 SELECT * FROM read_csv('export.dat')
DuckDB 报告无法给文件加锁(could not set lock)另一个程序——另一个 DuckDB、某个脚本、另一个应用——正以可写方式打开这个数据库,而 DuckDB 只允许一个进程写同一个文件。在那边关掉它,再重新打开
DuckDB 报告权限不足(permission denied)你的账户读不了这个文件,或者写不了它:主数据库是以可写方式打开的。修改文件权限,或者勾选 只读 把它附加进来
打开数据库失败,什么都没变DuckLocal 运行期间这是正常的:打开失败时保留原来的工作区。看通知里的原因
状态栏提示 DuckDB v1.x+ 可读,同事却打不开这个文件对方的 DuckDB 比这个版本旧。对方需要升级,或者由你用较旧的 STORAGE_VERSION 复制一份,见哪些 DuckDB 能读这个数据库

附加数据库 ​

症状原因与解决
重新启动后,附加的数据库不见了启动时它的文件不在记录的路径上,所以被跳过。登记仍然保留;把文件放回去,下次建立连接时它就会回来
这个数据库已经打开了,名为 …。这个文件已经是主数据库,或者已经以这个名字附加。直接用这个名字查询即可
无法附加 …:名称 … 已被当前数据库占用。连接里已经有别的东西用了记录的别名——比如你在 SQL 里用同样的名字附加过一个数据库。先 DETACH 那一个,再重新打开数据库或重启应用
写入附加的数据库失败它是以只读方式附加的(默认如此)。在侧栏选 分离数据库,再取消勾选 只读 重新附加
附加时新建了一个空数据库取消勾选 只读 时,不存在的 DuckDB 路径会被新建。分离它,删掉这个空文件,再检查路径
不带库名的表名找到了别的表不带库名的表名在默认数据库里查找。右键点击数据库选 设为默认数据库,或者写成 别名.表

访达与快速查看 ​

以下内容只适用于 macOS。

症状原因与解决
双击 .parquet 或 .duckdb 文件打开了别的应用那个应用已经是默认应用。在访达里 显示简介 → 打开方式,选 DuckLocal,再点 全部更改…
双击 CSV 或 Excel 文件没有用 DuckLocal 打开有意如此:DuckLocal 不抢这些格式。用 打开方式 → DuckLocal,或者把文件拖到程序坞图标上
打开方式 里没有 DuckLocal,或按空格键看不到 DuckLocal 的预览macOS 还没登记这个应用。把它移到“应用程序”里并启动一次。预览的话,再在终端里运行 qlmanage -r,并在“系统设置”的扩展设置里确认快速查看下的 DuckLocal Preview 已开启
普通 .json 或 Excel 文件没有 DuckLocal 的预览有意如此:这些交给 macOS 自带的预览。.jsonl 和 .ndjson 文件会有预览
预览只显示 50 行有意如此:预览从不扫描整个文件。其余的数据请在 DuckLocal 里打开查看
.duckdb 文件的预览显示错误预览用的是 DuckLocal 自带的 DuckDB,所以较新 DuckDB 写的文件在这里同样打不开。见打开数据库

运行查询 ​

症状原因与解决
运行 没反应已有查询在运行。点运行旁边的 停止,或按 ⌘.,即可中断
查询失败,报 Interrupted运行期间有人点了 停止(或按了 ⌘.)。重新运行即可
SQL 里有一段红色波浪线上次运行在那里出错。看 查询失败 提示里的信息;下次运行时标记会清除
⌘↵ 显示了编辑器而不是运行在首次运行界面上,⌘↵ 的意思是“给我一个编辑器”。再按一次就会运行
结果提前截断并有提示达到了 100,000 行或 2,000,000 个单元格的上限。缩小查询范围即可,没有分页
时间戳看起来偏了表格里的时间戳是 UTC,不是本地时间
TIMETZ 的时区偏移不见了,或者 BIT、BIGNUM 的值看起来是一串字节这些类型在传给 DuckLocal 的途中无法和普通值区分。在 SQL 里写 CAST(column AS VARCHAR) 就能看到真实的值
排序没有带回预览之外的行点表头只会重排已加载的行。要在截断之前对完整结果排序,请在 SQL 中使用 ORDER BY
查询需要尚未安装的扩展不再自动下载缺失的扩展。先在 扩展 标签页显式安装,再加载或重跑查询
0.3.0 之前能运行的查询,提示扩展未安装或函数不存在DuckLocal 0.3.0 用的是 DuckDB 2.0,装好的扩展按 DuckDB 版本分开存放。在 扩展 标签页里重新安装即可,见扩展
minutes 这样的裸列别名导致解析错误它是 SQL 关键字。写成 AS minutes,或者给别名加双引号:SELECT count(*) AS "minutes" FROM events
点了表或历史记录后我的 SQL 没了这类点击会替换编辑器里的全部内容。临时试写的 SQL 最好放在新的查询标签页里
导出时悄悄覆盖了文件导出会直接写入给定的路径,不作询问。换个文件名即可

S3 ​

症状原因与解决
S3 凭据丢了凭据本来就只在当前会话有效,打开或切换数据库也会清除。重新配置即可
离线时配置 S3 失败首次使用会执行 INSTALL httpfs,要下载扩展。联网装过一次后就会缓存下来
临时(STS)凭据被拒绝不会发送会话令牌(session token),请改用长期密钥,见 S3 与 httpfs
bucket 看起来比实际少每一层最多列出 1,000 个条目。改用通配符查询,比如 's3://bucket/prefix/*.parquet'

仪表盘(dashboard) ​

症状原因与解决
仪表盘的图表提示查询必须只读.dash 里的查询试图写入(DDL、DML、COPY、ATTACH 等)。仪表盘只执行只读语句;准备工作请放到 SQL 编辑器里做
agent 没看到我的评论评论不会自动发给谁,要 agent 自己去读。让它运行 ducklocal comments 文件;装了官方 skill 的 agent,直接说“处理 文件 上的评论”即可
agent 的回复或修改没有显示窗口在一秒内就会跟上规格文件和 文件.comments.json 的变化。如果规格文件已经通不过校验,仪表盘会保留上一个能用的版本,并在上方说明原因;点 查看 spec 看文件内容
仪表盘里的 PIVOT 被拒绝嵌在 SELECT 或 WITH 里的 PIVOT 必须写明取值。请列出取值:PIVOT t ON channel IN ('Web', 'Store') USING sum(revenue),或者让查询以 PIVOT 开头

外观 ​

症状原因与解决
每次启动主题都回到浅色主题不会在两次启动之间保存,语言会保存
文字或图标太小 / 太大用标题栏的 Aa 按钮,或 ⌘+ / ⌘− / ⌘0。见界面大小
界面语言不对用标题栏的 EN / 中 按钮切换,选择会记住

从头开始 ​

要清除历史、已登记的文件、打开的标签页和设置,先退出 DuckLocal,再删除它的应用数据目录:

bash
rm -rf ~/Library/Application\ Support/DuckLocal

数据文件本身不受影响,删掉的只是 DuckLocal 自己的记录。这个目录里具体存了什么,见设置与应用数据。

基于 Apache-2.0 许可开源发布。