执行存储过程,报错
java.sql.SQLException: The user specified as a definer ('root'@'10.%.%.%') does not exist
at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:127)
at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:95)
at com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:122)
at com.mysql.cj.jdbc.ClientPreparedStatement.executeInternal(ClientPreparedStatement.java:960)
at com.mysql.cj.jdbc.ClientPreparedStatement.execute(ClientPreparedStatement.java:388)
at com.mysql.cj.jdbc.CallableStatement.execute(CallableStatement.java:809)
at com.paxunke.smart.utils.MysqlUtils.execWriteReportProc(MysqlUtils.java:260)
at com.paxunke.smart.testcase.Test.main(Test.java:125)
执行 grant all privileges on *.* to root@"%" identified by "." 也报错
mysql> grant all privileges on *.* to root@"%" identified by ".";
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'identified by "."' at line 1
最终解决办法:
执行sql语句:
GRANT ALL PRIVILEGES ON database_name.* to 'root'@'localhost';
FLUSH PRIVILEGES;
存储过程中 definer修改为:root@localhost