navicat 16 备份视图和存储过程必须手动勾选对应选项,否则默认仅导出表结构和数据;需在备份向导或批处理作业子窗口的「高级」页启用“导出视图”“导出存储过程和函数”等开关,并确保账户具备show view、execute等权限。

Navicat 16 备份视图和存储过程必须勾选对应选项
默认情况下,Navicat 的备份向导只导出表结构和数据,视图、存储过程、函数、触发器、事件全都不会包含——不是漏了,是根本没开开关。你点“开始备份”后生成的 .sql 文件里搜 CREATE VIEW 或 CREATE PROCEDURE,大概率为空。
正确做法是在备份向导的「高级」选项页手动启用:
- 勾选
导出视图 - 勾选
导出存储过程和函数 - 勾选
导出触发器(如果依赖触发逻辑) - 勾选
导出事件(如用 MySQL 事件调度器做定时任务)
注意:导出创建语句 和 导出 DROP 语句 是两个独立开关。如果后续要用于重建(比如迁移或测试环境初始化),建议同时勾选后者,避免 ERROR 1050 (42S01): Table already exists 类错误。
用批处理作业备份时,这些选项藏在“可用的工作”配置里
如果你走的是「自动运行 → 新建批处理作业 → 添加 Backup xxx」这条路径,那上面那些选项**不会出现在批处理作业界面里**,而是在你双击「可用的工作」中的 Backup mydb 后弹出的子窗口中——这个窗口和手动备份向导几乎一样,但容易被忽略。
常见误操作是直接保存批处理作业,结果定时跑出来的备份文件永远不带视图和存储过程。验证方法很简单:备份完成后打开生成的 .sql 文件,搜索 CREATE VIEW;没结果,就是没配对。
该子窗口里同样有「高级」标签页,选项名称和手动备份一致,只是位置更隐蔽。
mysqldump 命令行等效参数可作交叉验证
Navicat 底层调用的是 mysqldump,所以它的行为完全受这些参数控制:
-
--routines→ 对应 Navicat 的「导出存储过程和函数」 -
--triggers→ 对应「导出触发器」 -
--events→ 对应「导出事件」 -
--no-create-info(未勾选时默认不加)→ 若勾了「仅数据」,就会带上这个,此时视图定义也不会导出
如果你发现 Navicat 备份出来的 SQL 恢复后视图丢失,但用 mysqldump -u root -p --routines --triggers mydb > test.sql 却能导出完整内容,基本可以断定是 Navicat 界面里漏勾了选项,而不是权限或版本问题。
权限不足会导致视图/存储过程静默跳过
即使所有选项都勾了,如果连接账户缺少 SELECT 权限以外的权限,Navicat 也不会报错,而是直接跳过相关对象。
必须确保账号拥有:
-
SELECTon the database(查表/视图元数据) -
SHOW VIEW(否则视图定义无法读取) -
EXECUTE(查看存储过程/函数定义所需,MySQL 8.0+ 要求) -
TRIGGER(导出触发器必需)
执行 SHOW GRANTS FOR 'your_user'@'%'; 检查输出是否含上述权限。缺失任意一项,对应对象就不会出现在备份文件里,且 Navicat 不提示、不报错、不写日志——这是最容易被忽略的静默失败点。











