项目场景:
mysql创建数据加工流程,使用dophinscheduler定时调度运行项目。
问题描述
运行报错:java.sql.SQLException:User does not have access to metadata required to determine stored procedure parameter types.
原因分析:
使用root用户创建加工过程,但是dophinscheduler调度用的是his用户。
create definer=‘root’@‘%’ procedure ‘proc_…’
JDBC在调用存储过程时不光用户要有execute的权限,还需要对mysql.proc具有访问权限。否则它无法访问metadata。
解决方案:
给数据库用户赋权,赋执行mysql.proc表的select权限,示例如下:
GRANT SELECT ON mysql.proc TO ‘his’@‘localhost’;
flush privileges;
建议大家不要使用mysql数据库的root用户来创建数据库表、存储过程等等。。。
https://blog.csdn.net/weixin_30815469/article/details/96270522