DBeaver社区版不支持定时任务,日志仅企业版可见于workspace/.metadata/.log和dbeaver-debug.log;常见“已运行无效果”因连接失效、名称不匹配、路径或变量语法错误导致静默跳过。

定时任务执行日志在哪看
DBeaver 社区版不支持定时任务,只有 DBeaver Enterprise 或 DBeaver Ultimate 版本才提供任务调度功能。如果你用的是社区版,数据库任务 视图里根本不会出现“计划”按钮,也看不到任何执行记录——这不是配置问题,是版本限制。
在企业版中,定时任务的执行状态和日志不写入数据库,也不保存在 UI 界面的历史面板里,而是输出到本地日志文件中:
-
workspace/.metadata/.log(Eclipse 底层日志,含任务启动/失败堆栈) -
workspace/.metadata/dbeaver-debug.log(需开启调试模式才会生成,含详细任务参数与时间戳) - 若任务配置了
-output参数(如导出任务),结果文件路径由你指定,但执行成功与否仍要查上面两个日志
为什么“任务已运行”但没效果
常见现象:任务列表里显示“上次执行时间”更新了,但目标表没变化、文件没生成、SQL 没执行。这通常不是 DBeaver 本身卡住,而是任务上下文失效导致静默跳过:
- 连接断开后未自动重连 —— 任务运行时若连接状态为
DISCONNECTED,默认不报错也不重试,直接跳过 - 数据库连接名变更或大小写不一致 ——
-con "MySQL-Prod"和实际连接名mysql-prod不匹配,任务会找不到连接,日志里只有一行Can't resolve connection 'MySQL-Prod' - SQL 脚本路径含中文或空格且未加引号 —— 命令行解析失败,日志中出现
FileNotFoundException,但 UI 不提示 - 变量传参格式错误,比如用了
-variables "date=2026-11-05;table=users",但 SQL 中写成${date}而非#{date}(DBeaver 用的是#{key}占位语法)
如何验证某次任务是否真正触发了 SQL
最直接的办法是绕过 DBeaver 的任务调度,用命令行复现执行逻辑,观察真实行为:
先从 UI 中复制任务配置的关键参数(连接名、脚本路径、变量),然后终端执行:
./dbeaver-cli -con "MySQL-Prod" -sql "/path/to/task.sql" -variables "date=2026-11-05" -timeout 60 -format csv -output "/tmp/test_run.csv"
检查返回码和 /tmp/test_run.csv 内容。如果命令行能跑通但定时任务不行,基本锁定是任务调度器的连接上下文或权限问题。
容易被忽略的细节
企业版定时任务依赖操作系统级调度(Windows 任务计划程序 / Linux cron),DBeaver 自身只是注册了一个触发器。这意味着:
- DBeaver 客户端必须保持运行状态(最小化也行),关闭后所有定时任务立即停摆
- 任务执行时的工作目录是 DBeaver 启动时的当前目录,不是脚本所在目录 —— 所有相对路径(如
./data/input.csv)都以此为准 - MySQL 的
general_log或slow_query_log不会记录 DBeaver 任务执行的语句,除非你在连接配置里显式勾选了“启用查询日志”并重启连接
真正可靠的执行确认方式,永远是结合 .log 文件中的时间戳 + 数据库端的变更验证(比如查 audit_log 表或 SELECT NOW() 插入标记),而不是只盯着 UI 上那个“上次执行时间”。


















