【问题标题】:Mysql 8.0: How to Alter Procedure DefinerMysql 8.0:如何更改过程定义器
【发布时间】:2019-11-26 10:20:06
【问题描述】:

我们很容易将例程/SP 定义器更新到 5.7,但在 8.0 中我们无法找到确切的命令。我在下面运行但不工作。另请注意,我们无法生成脚本并手动更新它然后重新执行脚本。我们有大约 3500 个实时服务提供商,我们无法承受任何停机时间。有什么解决办法吗?

ALTER  PROCEDURE sng.sp_get_profile_search_2_test SQL SECURITY
DEFINER=`root`@`localhost`

ALTER  PROCEDURE sng.sp_get_profile_search_2_test SQL SECURITY
DEFINER='root'@'localhost'

【问题讨论】:

  • 定义者名称不能改,只能将SQL SECURITY改成DEFINER or INVOKER,mysql-docs

标签: mysql sql stored-procedures alter mysql-8.0


【解决方案1】:

示例:

UPDATE `mysql`.`procedure` pro SET definer = 'user@%' WHERE definer='root@%'

【讨论】:

  • 记住:它是 8.0 版本错误代码:1146 表 'mysql.procedure' 不存在
  • 更新 sng.sp_get_profile_search_2_test SET DEFINER = 'dbname@localhost';
【解决方案2】:

试试这个:

UPDATE sng.sp_get_profile_search_2_test SET DEFINER = 'dbname@localhost';

【讨论】:

  • 错误代码:1064 您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以了解在附近使用的正确语法
猜你喜欢
  • 2011-03-13
  • 2010-12-08
  • 2019-08-10
  • 2019-04-04
  • 2021-06-22
  • 1970-01-01
  • 2018-10-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多