gpt4 book ai didi

mysql - 在存储过程中重命名用户

转载 作者:行者123 更新时间:2023-11-29 16:04:03 25 4
gpt4 key购买 nike

我正在尝试创建一个存储过程来重命名 MySQL 数据库中的用户:

CREATE DEFINER=`admin`@`%` PROCEDURE `renamedbuser`(
IN _oldname VARCHAR(200),
IN _newname VARCHAR(200)
)
BEGIN
IF (SELECT COUNT(User) FROM mysql.user WHERE User = _oldname) > 0 THEN
BEGIN
RENAME USER _oldname TO _newname;
END;
END IF;
END

当我运行此过程时,出现以下错误:

MySql.Data.MySqlClient.MySqlException (0x80004005): Operation RENAME USER failed for '_oldname'@'%'

在我看来,当 RENAME USER 行执行时,它使用变量 _oldname 的名称作为原始用户名,而不是变量包含的 .

如果我执行类似的事情

RENAME USER 'test' TO 'testing';

如果按我的预期工作,请重命名“test”@“%”用户。

我是否错误地调用了 RENAME USER?当从存储过程调用时,该语句是否不能以这种方式工作?有什么方法可以实现我正在寻找的行为吗?

最佳答案

account names 的文档中它说:

The user name and host name need not be quoted if they are legal as unquoted identifiers.

我想这优先于您的存储过程变量。它还说:

Quote user names and host names as identifiers or as strings, using either backticks (`), single quotation marks ('), or double quotation marks (").

您可以尝试使用反引号,如下所示:

RENAME USER `_oldname` TO `_newname`;

关于mysql - 在存储过程中重命名用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55910950/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com