The user specified as a definer ('test'@'%') does not exist

杨新朋| 阅读:58 发表时间:2018-10-11 16:43:59 数据库

mysql数据及储存过程从一个数据库迁移到另外一个数据库的时候出现:The user specified as a definer ('test'@'%') does not exist错误的处理方案。

查看了自己mysql的用户表后,发现确实没有test这个用户,但是我程序用的是root登录的,所以感觉有些莫名其妙。

后来通过查资料发现,是由于自己存储过程设置的安全性为definer,而当时的那个数据库存在test这个用户且用的test用户创建的存储过程。

所以解决方法主要有以下两种:

保持definer安全性

1)在navicat上进行修改

将定义者从test改为在该服务器存在的用户(一般每个服务器都有root@localhost)

1000464-20170627103850883-134544044.png

1000464-20170627103946727-272110027.png

2)通过sql语句修改

mysql>update mysql.proc set DEFINER='root@localhost' WHERE NAME='' AND db='mydb';

其中,mysql.proc是固定的,definer即要改为的用户名,name为存储过程名,db为数据库名

本文由杨新朋发表并编辑,转载此文章须经作者同意,并请附上出处及本页链接。如有侵权,请联系本站删除。