错误:1449,“指定的定义者用户('root'@'localhost')不存在”

5
当我试图通过我的应用程序从数据库检索或插入数据时,会出现上述错误。存储过程代码如下:
CREATE DEFINER=`root`@`localhost` PROCEDURE `sp_createUser`(
    IN p_name VARCHAR(20),
    IN p_username VARCHAR(20),
    IN p_password VARCHAR(20)
)
BEGIN
    if ( select exists (select 1 from tbl_user where user_username = p_username) ) THEN

        select 'Username Exists !!';

    ELSE

        insert into tbl_user
        (
            user_name,
            user_username,
            user_password
        )
        values
        (
            p_name,
            p_username,
            p_password
        );

    END IF;
END $$
DELIMITER ;

然而,当我在sqlyog中运行以下查询时,它会返回1:

SELECT EXISTS(SELECT 1 FROM mysql.user WHERE USER = 'root');

我正在使用XAMPP和Python来制作我的应用程序。 提前感谢。


select host from mysql.user where user = 'root' 返回什么? - Barmar
我的猜测是实际上是root@%,而不是root@localhost - Barmar
@Barmar 127.0.0.1, ::1, 本地主机 - Oreo
@Barmar 你的意思是更改创建定义者行吗? - Oreo
我猜测查询结果不会返回“localhost”。现在我不明白为什么你会收到错误信息。 - Barmar
1个回答

22

2
分辨率和错误信息一样模糊,但它能正常工作! - pdem
这对我非常有效。而且我尝试了很多其他的解决方案! - Victor
请问那个命令的相反操作是什么?我想测试一下,谢谢。 - Mathew Magante

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接