问题描述:在JAVA中调用MYSQL存储过程遇到以下报错: 【 Request Exception 】请求终端:、请求客户端: 101.2*.1*.** 、请求路径: http://eap//definition/rate/uploadRateFile 、请求入参:、 Exception : org.springframework.dao.TransientDataAccessResourceException: CallableStatementCallback; SQL []; User does not have access to metadata required to determine stored procedure parameter types. If rights can not be granted, configure connection with "noAccessToProcedureBodies=true" to have driver generate parameters that represent INOUT strings irregardless of actual parameter types.; nested exception is java.sql.SQLException: User does not have access to metadata required to determine stored procedure parameter types. If rights can not be granted, configure connection with "noAccessToProcedureBodies=true" to have driver generate parameters that represent INOUT strings irregardless of actual parameter types. at org.springframework.jdbc.support.SQLStateSQLExceptionTranslator.doTranslate(SQLStateSQLExceptionTranslator.java:108) at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:73) at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:82) at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:82) at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:1099) at org.springframework.jdbc.core.JdbcTemplate.call(JdbcTemplate.java:1135) at com.aeonlife.riskmanager.definition.service.impl.RateServiceImpl.createPartition(RateServiceImpl.java:275) at com.aeonlife.riskmanager.definition.service.impl.RateServiceImpl.createPartitions(RateServiceImpl.java:256) at com.aeonlife.riskmanager.definition.service.impl.RateServiceImpl.uploadRate(RateServiceImpl.java:113) 问题分析: 出现这个错误的原因是 低权用户调用高权用户创建的存储过程出错。 首先,一般情况应该在服务器为数据库建立一个单独的账号,以用于管理数据库,并且该用户权限应被严格控制。而在登录SQL数据库时,应使用创建的单独账号进行数据库一些DLL定义,如建立触发器、函数、存储过程。 尤其是存储过程,因为如果是root等高权限用户建立的存储过程,低权用户访问可能出现: 【Userdoes not have access to metadata required to determine stored procedureparameter types. If rights can not be granted, configure connection with"noAccessToProcedureBodies=true" to have driver generateparameters that represent INOUT strings irregardless of actual parametertypes.】 类似错误。原因在于低权用户访问了高权用户创建的存储过程。 问题的解决方案有三种方法: 1.在连接MySQL的URL中添加参数,jdbc:mysql://2x.1x.3x.1x:3306/dbname?autoReconnect=true&failOverReadOnly=false&useUnicode=true&characterEncoding=utf8&useSSL=false& noAccessToProcedureBodies=true 2.给连接用户授权权限:GRANT SELECT ON mysql.proc TO 'user'@'localhost'; 3.右键该存储过程,选择对象属性,将定义者修改为连接用户(也就是权限低的用户)或者使用命令修改。 mysql>update mysql.proc set DEFINER='usename' WHERE NAME='proc_name' AND db='testdb';
第42期 MySQL存储过程报错noAccessToProcedureBodies
来源:这里教程网
时间:2026-03-01 18:30:34
作者:
编辑推荐:
- 第42期 MySQL存储过程报错noAccessToProcedureBodies03-01
- 百亿大表的实时分析:华安基金 HTAP 数据库的选型历程与 TiDB 使用体验03-01
- 主从从库MTS HANG死一列03-01
- 主从从库MTS HANG死一列03-01
- 慢查询中关于MDL LOCK记录的变化03-01
- 主从半同步降级异步分析03-01
- 一个古老的死锁BUG终于修复了03-01
- mysql面试03-01
下一篇:
相关推荐
-
雷神推出 MIX PRO II 迷你主机:基于 Ultra 200H,玻璃上盖 + ARGB 灯效
2 月 9 日消息,雷神 (THUNDEROBOT) 现已宣布推出基于英
-
制造商 Musnap 推出彩色墨水屏电纸书 Ocean C:支持手写笔、第三方安卓应用
2 月 10 日消息,制造商 Musnap 现已在海外推出一款 Oce
热文推荐
- 百亿大表的实时分析:华安基金 HTAP 数据库的选型历程与 TiDB 使用体验
- 主从从库MTS HANG死一列
主从从库MTS HANG死一列
26-03-01 - 主从从库MTS HANG死一列
主从从库MTS HANG死一列
26-03-01 - 慢查询中关于MDL LOCK记录的变化
慢查询中关于MDL LOCK记录的变化
26-03-01 - 主从半同步降级异步分析
主从半同步降级异步分析
26-03-01 - mysql面试
mysql面试
26-03-01 - 如何让SQL速度飞起来 入门YashanDB优化器
如何让SQL速度飞起来 入门YashanDB优化器
26-03-01 - 数智化转型 | 星环科技Defensor 助力某银行数据分类分级
数智化转型 | 星环科技Defensor 助力某银行数据分类分级
26-03-01 - 刚刚!MySQL创新版9.2.0发布,学爆它!
刚刚!MySQL创新版9.2.0发布,学爆它!
26-03-01 - 【SQLAOT】一个用来辅助SQL优化工作的工具
【SQLAOT】一个用来辅助SQL优化工作的工具
26-03-01
