Navicat还原后存储过程“不见了”大概率是备份时未勾选“导出存储过程和函数”,导致导出文件中缺失CREATE PROCEDURE语句;需在备份高级选项中手动启用该选项,并确保账号具备SELECT、SHOW VIEW、EXECUTE权限,还原后刷新对象树并用SQL验证存在性。
navicat 还原后存储过程“不见了”,大概率不是还原失败,而是根本没导出过——备份时没勾选「导出存储过程和函数」,还原文件里压根没有 create procedure 语句。
备份任务里漏勾「导出存储过程和函数」
这是最常见原因。Navicat 默认备份只导出表结构和数据,PROCEDURE、FUNCTION、TRIGGER 全部被跳过。
- 新建备份任务后,别急着点「保存」或「开始备份」
- 必须点击右下角的「高级」按钮(注意:不是「计划」里的那个),进入高级设置页
- 勾选「导出存储过程和函数」——否则导出的
.psc或.sql文件里不会出现任何CREATE PROCEDURE - 如果数据库里还有函数(
FUNCTION),它也归在这个选项里,不单独列出
还原时权限不足或 SQL 不兼容导致静默跳过
即使导出文件里有 CREATE PROCEDURE,还原时也可能被 MySQL 拒绝执行,且 Navicat 不报错、不提示,直接跳过。
- 还原账号必须同时具备
SELECT、SHOW VIEW、EXECUTE权限,缺一不可 - MySQL 5.7+ 默认要求存储过程声明
DETERMINISTIC、NO SQL或READS SQL DATA,否则报ERROR 1418并终止创建 - 可在导出 SQL 文件开头手动加一行:
SET log_bin_trust_function_creators = 1;,再执行还原 - 若还原到从库,检查
sql_log_bin=OFF是否启用——触发器和过程在此模式下会被静默忽略
还原后没刷新对象树,或权限限制导致“看不见”
过程其实已存在,但 Navicat 界面不显示,容易误判为“丢失”。
将用户讲稿一键生成乔布斯风极简科技感竖屏HTML演示稿。当用户需要生成PPT、演示文稿、Slides、幻灯片,或要求科技风/极简风/乔布斯风格的演示时触发此技能。输出为单个可直接运行的HTML文件。
- 还原完成后,右键数据库 → 「刷新」,确保对象树重新加载元数据
- 展开数据库节点,找「存储过程」文件夹(不是「函数」,也不是「程序」);若没这个节点,说明连接用户无权读取
information_schema.ROUTINES - 用 SQL 验证是否存在:
SHOW PROCEDURE STATUS LIKE 'your_proc_name';或SELECT ROUTINE_NAME FROM information_schema.ROUTINES WHERE ROUTINE_SCHEMA = 'db_name' AND ROUTINE_TYPE = 'PROCEDURE'; - 若 SQL 能查到但 Navicat 不显示,基本是权限问题:需
SELECT ON information_schema.ROUTINES,而不仅是数据库级权限
别信“备份成功”弹窗,一定要验内容
Navicat 的「备份成功」只表示文件写入完成,不代表内容完整。很多用户还原后才发现过程没了,就是因为没验证导出文件本身。
- 用文本编辑器打开导出的
.sql文件(如先「提取 SQL」),搜索CREATE PROCEDURE - 确认有
DELIMITER $$和匹配的$$结尾——没有说明高级选项未生效,或备份连接用了低权限账号 - 如果搜不到,重做备份比调试还原更省时间
真正麻烦的不是还原失败,而是整个流程静默:备份不导、还原不报、界面不显。每一步都得主动验证,不能依赖 Navicat 的默认行为或弹窗提示。

















