Py学习  »  DATABASE

错误1146(42S02):表“mysql”。调用存储过程时,“proc”不存在

Payel Senapati • 3 年前 • 1663 次点击  

我在用这根线-

Rename a mysql procedure

重命名存储过程的步骤

在这里,尝试回答中所示的命令-

UPDATE `mysql`.`proc`
SET name = '<new_proc_name>',
specific_name = '<new_proc_name>'
WHERE db = '<database>' AND
  name = '<old_proc_name>';

我明白了-

ERROR 1146 (42S02): Table 'mysql.proc' doesn't exist while calling a stored procedure

关于其他关于 mysql.proc 不退出,无解决调用存储过程的特定问题。

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/131649
 
1663 次点击  
文章 [ 2 ]  |  最新文章 3 年前
danblack
Reply   •   1 楼
danblack    3 年前

建议避免摆弄 任何 mysql表直接访问。

使用 show create procedure old_proc_name

然后 create procedure new_proc_name ....

扔掉旧的 drop procedure old_proc_name

Barmar
Reply   •   2 楼
Barmar    3 年前

这个 mysql.proc 表在MySQL 8.0中被删除。看见 No more mysql.proc in MySQL 8.0

你可以用 information_schema.routines 获取有关存储过程的信息。但这是只读视图,无法更新。所以我认为再也没有简单的方法来重命名程序了。您可以使用动态SQL来使用此信息定义具有新名称的过程。

编辑:

不幸的是,仅在MySQL中无法实现上述功能,因为 CREATE PROCEDURE 无法使用 PREPARE 信息模式。日常工作 不包含重新创建过程所需的所有信息。你可以用一种外部语言通过执行 SHOW CREATE PROCEDURE 查询,然后替换名称以形成新查询。