通过报错信息ERROR 1449 (HY000): The user specified as a definer ('xx'@'%') does not exist可以看出是我们的数据库中没有xx@%这个用户。
我的情况是确实没有,因为我已经更换了数据库用户名。可是为什么他却提示了之前的用户名呢?
这一点很奇怪。
然后开发那边把报错的sql语句发来了,然后研究了一下,发现他里面有调用到一个存储过程。
这样基本就可以判定是存储过程出了问题,以为其他的表都可以正常查询唯独使用了存储过程函数的语句报错了。
OK原因基本找到了,因为存储过程的创建者是之前的用户,但是之前的用户已经被删除了,所以再次调用的时候就会提示你找不到这个用户。
解决方案也很简单,就是登陆这个用户然后重新创建一下这个存储过程就OK了。
好了方法就已经告诉你了具体怎么操作我就不说了,因为每个项目的存储过程都不一样。
还是讲一下大致过程吧。
1、查看存储过程的所属对象: 右键存储过程函数——>选择对象属性——>查看函数创建和所属是不是当前登录的用户
2、如果不是,备份原有的存储过程函数,复制存储过程函数里面所有内容,新建一个存储过程,命名跟原来一样。
3、这样创建者就是属于当前登录用户了。原来的函数如果没用了就可以直接删除。
除特别注明外,本站所有文章均为博文家原创,转载请注明出处来自https://www.32e.top/databases/mysql/article-129.html
暂无评论