1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > jdbc mysql 偶发空指针_JDBC连接执行MySQL存储过程报空指针或权限错误

jdbc mysql 偶发空指针_JDBC连接执行MySQL存储过程报空指针或权限错误

时间:2021-01-31 17:14:31

相关推荐

jdbc mysql 偶发空指针_JDBC连接执行MySQL存储过程报空指针或权限错误

最近使用root用户编写了几个存储过程,但是使用普通用户通过JDBC连接执行却报错:

java.lang.NullPointerException......

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.

报哪个错要看你使用的Connector/J版本了。

这是因为JDBC调用存储过程时需要有show create procudure 权限或是有表mysql.proc的select权限。通过在JDBC连接属性中设置noAccessToProcedureBodies=true(默认false)解决或是授予普通用户相应的权限或者是按/commits/17817中的patch修改。

该noAccessToProcedureBodies=true的影响:

1. 调用存储过程时,将没有类型检查,设为字符串类型,并且所有的参数设为in类型,但是在调用registerOutParameter时,不抛出异常。

2. 存储过程的查询结果无法使用getXXX(String parameterName)的形式获取,只能通过getXXX(int parameterIndex)的方式获取。

参考:

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。