navicat premium 本身不执行定时逻辑,所有“定时推送”都依赖客户端调度器触发数据库查询+导出+邮件发送三步链路;真正能跑通的唯一路径是:把多表关联sql封装成「导出查询」,再用批处理作业绑定附件和smtp,最后靠windows任务计划或navicat自带计划(premium版)驱动执行。

Navicat Premium 本身不执行定时逻辑,所有“定时推送”都依赖客户端调度器触发数据库查询 + 导出 + 邮件发送三步链路;真正能跑通的唯一路径是:把多表关联 SQL 封装成「导出查询」,再用批处理作业绑定附件和 SMTP,最后靠 Windows 任务计划或 Navicat 自带计划(Premium 版)驱动执行。
必须先保存为「导出查询」,否则邮件附件永远为空
Navicat 的「自动运行」完全不识别未保存的原始查询语句。哪怕你写了完美的 SELECT o.id, u.name FROM orders o JOIN users u ON o.user_id = u.id,只要没走导出流程,批处理里拖进去的只是个空壳。
- 写好关联查询后,点右上角「导出」按钮 → 选 Excel 或 CSV(PDF/HTML 不支持附件)
- 务必勾选「使用文本限定符」和「UTF-8 with BOM」编码
- 保存路径必须是全英文、无空格、绝对路径(例如
C:\navicat_exports\order_user_report.xlsx) - 文件名可含占位符如
report_<date>.xlsx</date>,Navicat 会自动替换为当天日期 - 保存成功后,在左侧「查询」列表里能看到同名条目,这才是可被批处理引用的有效对象
批处理作业中「添加附件」是强制操作,不是可选项
在「自动运行 → 新建批处理作业」中,把刚保存的导出查询拖入「已选择的工作」后,下方条目右侧会出现一个回形针图标——必须手动点击它,否则邮件正文只会显示“执行成功”,附件大小恒为 0 KB。
- 这个按钮只对「导出查询」类型生效;普通查询、备份、同步任务点了也没反应
- 一个批处理作业只能绑定一个附件;要发多张报表(比如订单+用户+商品三张),得建三个独立作业
- 如果附件没加载出来,优先检查导出查询是否真的保存成功,而不是反复重试 SMTP 配置
SMTP 配置必须用授权码,且端口/SSL 必须匹配邮箱服务商要求
填在「高级」页签里的密码不是邮箱登录密码,而是单独生成的 SMTP 授权码;且不同邮箱对端口和加密方式有硬性要求,填错直接报 Authentication failed 或 Connection refused。
- QQ 邮箱:
smtp.qq.com,端口 465,SSL 开启 - 163 邮箱:
smtp.163.com,端口 465,SSL 开启 - Gmail:
smtp.gmail.com,端口 587,TLS 开启(需开启两步验证并生成应用专用密码) - 测试必须点「传送测试邮件」按钮,不能只靠保存判断配置是否生效
- 企业邮箱若受限,建议先用个人邮箱验证整条链路跑通,再切回工作环境
最常被忽略的复杂点是:整个流程依赖本地 Navicat 客户端持续在线且 Windows 用户保持登录状态;一旦电脑休眠、锁屏或用户登出,Windows 任务计划可能失败,而 Navicat 自带计划任务(需 Premium 版)也仅在软件启动时才监听调度。真要脱离人工值守,得把校验逻辑下沉到 MySQL 的 EVENT + STORED PROCEDURE 中,Navicat 只负责初始创建和维护。











