Navicat 15 不支持自定义备份文件名,.nb3/.psc 文件名由内部硬编码为“数据库名_毫秒级时区时间戳”格式,无变量占位符或设置入口;唯一可控命名方式是绕过界面备份,改用 mysqldump/pg_dump 脚本导出 SQL。

Navicat 15 不支持在界面中配置自动备份文件的自定义命名规则——所有 .nb3 或 .psc 备份文件名均由内部逻辑硬编码生成,无法通过设置、变量占位符或高级选项修改。
为什么 Navicat 15 的备份文件名无法自定义
Navicat 的「备份」功能(非「导出为 SQL」)生成的是专有加密格式:.nb3(Premium 15+)或 .psc(旧版)。这类文件名格式固定为 数据库名_时间戳.nb3,其中时间戳是毫秒级、带时区偏移的内部元数据,**不是系统时间,也不响应任何日期变量(如 %Y%m%d)**。你在计划任务里填 mydb_prod_%date%.nb3,它就真的会生成字面名为 mydb_prod_%date%.nb3 的文件,且无法被 Navicat 正确识别为备份。
根本原因在于:Navicat 把「备份」定位为快照式操作,命名逻辑深度耦合于其私有格式解析器,不开放配置入口。试图通过修改注册表、配置文件或逆向 patch,大概率导致备份失败或还原报错 Invalid backup file format。
可行替代路径:用 ncli + 脚本控制输出名
Navicat 15 自带命令行工具 ncli.exe(Windows)或 ncli(macOS/Linux),它支持调用已保存的「批处理作业」并重定向输出——但仅对「导出为 SQL」类作业生效,不适用于原生 .nb3 备份。
- 先在 Navicat 中创建一个「导出结构和数据」的作业(不是「备份」),保存为
mysql_export_job - 写 PowerShell 脚本(Windows):
Set-Location "C:\Program Files\PremiumSoft\Navicat Premium 15" $DATESTR = Get-Date -Format "yyyyMMdd_HHmm" .\ncli.exe -console -batch "mysql_export_job" -output "D:\backups\prod_db_$DATESTR.sql"
- 关键限制:
-output参数只影响 SQL 导出,对.nb3备份完全无效;若作业类型选错(比如用了「备份到 Navicat 格式」),该参数会被静默忽略 - macOS/Linux 用户需确保
ncli已执行--install注册,且脚本使用绝对路径调用
真正可控的命名:绕过 Navicat 备份,直连 mysqldump/pg_dump
如果你需要带环境标识(_prod)、Git commit hash、甚至动态库名的文件名,唯一可靠方式是放弃 Navicat 的「备份」按钮,改用其「导出为批处理脚本」功能,再手动改造:
- 右键数据库 →「备份数据库」→ 取消勾选「立即执行」→ 勾选「保存为批处理文件」
- 打开生成的
.bat,把其中类似mysqldump --user=root --password=123 mydb > backup.sql的行,改为:mysqldump --login-path=prod mydb > "D:\backups\mydb_prod_%date:~0,4%%date:~5,2%%date:~8,2%.sql"
- 密码必须用
mysql_config_editor配置login-path,否则明文密码会暴露在脚本和进程列表中 - Linux/macOS 下用
$(date +\%Y\%m\%d_\%H\%M),注意 shell 变量转义 - 该方案生成的是纯文本
.sql,可直接grep、diff、gzip,也兼容logrotate和对象存储归档
最常被忽略的一点:Navicat 界面里「设置任务计划」看似能定时,但它只是包装了 Windows 任务计划程序(或 launchd/cron)的触发器,**真正的命名控制权永远在脚本层,不在 Navicat 界面里**。别在「备份设置」里浪费时间找命名字段——它根本不存在。


















