这个错误究竟是什么?

Jan*_*ngo 14 mysql asp.net database-connection

我使用的数据库是MySQL 5.1.我相信,我在web.config中指定了right connectionstring.但是当我运行我的网络应用程序.它引发了这个例外: -

MySql.Data.MySqlClient.MySqlException:指定为定义者的用户('root'@'%')不存在

任何帮助.我为什么要这个?

Mar*_*tin 28

您加载的存储过程的源代码可能包含"DEFINER = root @'%'"作为定义的一部分 - 看起来有点像这样:

create definer='root'@'%' procedure sp_test() begin end;
Run Code Online (Sandbox Code Playgroud)

这里的问题是你的系统上没有'root'@'%'的帐户.这很容易证明.从MySQL命令行:

show grants for 'root'@'%';
Run Code Online (Sandbox Code Playgroud)

我希望这会返回一个错误消息:

ERROR 1141 (42000): There is no such grant defined for user 'root' on host '%'
Run Code Online (Sandbox Code Playgroud)

修复方法是更改​​存储过程的源,或创建缺少的帐户:

grant all on *.* to 'root'@'%' identified by 'password' with grant option;
Run Code Online (Sandbox Code Playgroud)

从任何地方都可以访问这样一个高性能帐户通常不是一个好主意,但这是另一个故事.