今天在项目中写junit测试更新mysql表数据的时候,运行测试的时报了The user specified as a definer ('test01'@'%') does not exist, 数据不能成功插入,用root用户连接的数据库,后来到数据库去看的时候发现update触发器写的是 /*!50017 DEFINER = 'test01'@'%' */, 把test01改为了root
使用SQLyog建了用户,然后又删掉用户,出现Mysql Error:The user specified as a definer (‘mysql.infoschema’@’localhost’) does not exist错误。最终找到了解决方案(https://www.xiaocaicai.com/2018/05/10/mysql-errorthe-user-specified-as-a-
描述 mysql管理员给调用方创建了一个名为test的用户,并授权了指定host,效果如下: mysql> select user,host from mysql.user where user = 'test';+------+------------+| user | host |+------+------------+| test | 172.17.0.2 ||
#修改存储过程、函数、事件、触发器、视图的 DEFINER select definer from mysql.proc; update mysql.proc set definer='root@localhost'; or update mysql.proc set definer='root@localhost' where db='db_name'; sele
从一个数据库 复制存储过程到另外一个数据库 如果是用图形界面的软件 比方说navicat 复制过去的话,然后执行 容易报错如下 java.sql.SQLException: The user specified as a definer ('xxxx'@'%') does not exist 因为在创建存储过程的时候吧相应的 定义的权限也带过去了,修正办法如下
数据库能正常连接,但是运行java程序后控制台报错: 在navicat中直接运行1的语句,提示2的信息,说明该用户没有相应的权限,只要给他授权就可以了,执行下面语句: GRANT ALL PRIVILEGES ON *.* TO root@"%" IDENTIFIED BY "."; 然后再刷新下: FLUSH PRIVILEGES; OK,再次执行程序就通过了。
项目开发中,经常会遇到数据库的迁移。但是如果迁移过去的数据库,没用之前创建该数据库的用户,在执行视图或者存储过程的时候会报: The user specified as a definer (''@'%') does not exist 1.打开DOS,将目录切换至mysql的bin目录下: 切换命令示例:cd D:/MySQL/bin 2.登录;命令如下: