重命名MySQL存储过程报ERROR 1146: mysql.proc表不存在问题
MySQL存储过程重命名报错与修复方案
报错根因
你使用的修改mysql.proc系统表的重命名方法仅适配MySQL 5.7及更早版本。MySQL 8.0版本开始官方已移除mysql.proc系统表,存储过程相关元数据迁移至information_schema.ROUTINES只读视图,无法直接通过UPDATE语句修改存储过程名称,这是触发报错的核心原因。
调用存储过程时触发报错的修复方法
- 如果调用所有存储过程都触发该报错,说明实例系统表元数据存在不一致,执行如下命令修复后重启MySQL服务即可:
mysql_upgrade -u root -p
该命令需要使用MySQL超级管理员权限执行,若使用云托管MySQL实例无法自行操作,联系服务商技术支持修复即可。
- 如果仅调用特定存储过程时触发报错,检查对应存储过程的业务逻辑,是否存在硬编码查询
mysql.proc表的代码,将查询目标替换为information_schema.ROUTINES表即可解决。
8.0及以上版本正确的存储过程重命名步骤
MySQL暂未提供原生的RENAME PROCEDURE语法,按照如下步骤操作可实现重命名:
- 导出原有存储过程的创建语句
SHOW CREATE PROCEDURE <old_proc_name>;
- 复制导出的创建语句,修改语句中的存储过程名称为新名称,执行新的创建语句生成新存储过程
- 验证新存储过程功能正常后,删除旧存储过程即可
DROP PROCEDURE IF EXISTS <old_proc_name>;
内容的提问来源于stack exchange,提问作者Payel Senapati
相关产品推荐
相关产品推荐

