今天遇到一个客户BUG,当前的jdbc连接用户是root,然后部分删除操作都会报下面这个错误:The user specified as a definer ('aaa'@'localhost') does not exist
最后找原因发现删除操作做了触发器,而触发器里面有这样一句
/*!50017 DEFINER = ''aaa@'localhost' */
原来最初是使用aaa这个mysql连接导入数据,这时系统将触发器的创建者定义为aaa了,后面如果用root去调用触发器时就会被认为没有操作触发器的权限,所以就报上面的错误了。
解决方法是修改definer=root即可
下面可以查看该数据库有哪些触发器:
SHOW TRIGGERS FROM [数据库名] WHERE DEFINER = 'aaa@localhost'
本文介绍了一种MySQL中常见的触发器Definer问题及其解决方案。当使用不同用户执行触发器时,若触发器的创建者定义为其他用户,则可能会导致权限问题。文章详细解释了如何检查触发器的创建者,并提供了修改Definer的方法。
7732

被折叠的 条评论
为什么被折叠?



