195天前2020-04-14 13:52:14 |    抢沙发  208 
今天对一个项目的数据库用户进行了变更,然后删除了原来的用户名,更换了一个新的数据库名。然后网站其他页面访问都正常,唯有一个计算距离的一个页面无法访问。一直报错用户不存在,而且用户名是我之前删除的用户名,但是我项目的数据库配置文件命名已经改过来了。怎么事儿呢?请跟随静心一起来了解一下吧!

mysql

通过报错信息ERROR 1449 (HY000): The user specified as a definer ('xx'@'%') does not exist可以看出是我们的数据库中没有xx@%这个用户。

我的情况是确实没有,因为我已经更换了数据库用户名。可是为什么他却提示了之前的用户名呢?

这一点很奇怪。

然后开发那边把报错的sql语句发来了,然后研究了一下,发现他里面有调用到一个存储过程。

这样基本就可以判定是存储过程出了问题,以为其他的表都可以正常查询唯独使用了存储过程函数的语句报错了。

OK原因基本找到了,因为存储过程的创建者是之前的用户,但是之前的用户已经被删除了,所以再次调用的时候就会提示你找不到这个用户。

解决方案也很简单,就是登陆这个用户然后重新创建一下这个存储过程就OK了。

好了方法就已经告诉你了具体怎么操作我就不说了,因为每个项目的存储过程都不一样。

还是讲一下大致过程吧。

1、查看存储过程的所属对象:  右键存储过程函数——>选择对象属性——>查看函数创建和所属是不是当前登录的用户
2、如果不是,备份原有的存储过程函数,复制存储过程函数里面所有内容,新建一个存储过程,命名跟原来一样。
3、这样创建者就是属于当前登录用户了。原来的函数如果没用了就可以直接删除。

发表评论

暂无评论

登录

忘记密码 ?

切换登录

注册

扫一扫二维码分享