MySQL中执行存储过程和函数时会检查过程的定义用户是否存在,以及是不是当前用户定义的,如果不存在,或者创建用户不对,即使当前用户有执行权限也会报错。
The user specified as a definer ('otherdataonline@%') does not exist
此时需要修改定义用户,语句如下:
update mysql.proc set DEFINER='root@%' WHERE NAME='p_update_rim_batch_log' AND db='otherdataonline';
刷新函数发现定义者已经修改了,重新连接数据库再执行就不会报错了。