无法执行存储过程(jdbc)。 'noAccessToProcedureBodies =真'

时间:2012-10-11 11:45:30

标签: java mysql tomcat jdbc mysql-connector

我们在一端有一个java tomcat服务器,另一端有一个mysql。 我们正在使用mysql-connector-java,尝试使用版本5.1.11和5.1.22。 mysql服务器版本是5.5.26

我们没有mysql.proc表的所有权限,因为它对所有数据库都存在安全风险。

当我使用给定的用户名和密码登录mysql时,我可以执行这些过程,但是当从java(jdbc)使用时,它会随着

而爆炸
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. 

我尝试了mysql给出的建议,在我们的jdbc连接URL中使用了'noAccessToProcedureBodies = true'。没有任何帮助!没有任何区别。 (这是我使用的jdbc连接字符串的示例:jdbc:mysql:// xxxxxx:xxxx / xxxx?noAccessToProcedureBodies = true& useInformationSchema = true)

当我阅读http://bugs.mysql.com/bug.php?id=61203时,我看到连接器中有一个错误,我尝试使用useInformationSchema = true。没有帮助,也没有更新mysql-connector-java,即使bug应该被修复。

有人遇到过这个吗?我想我做错了什么,每个人都说这应该有用,但对我来说却没有。

提前致谢!

2 个答案:

答案 0 :(得分:0)

尚未验证...只需使用:对于sql URL,useInformationSchema = true。 (不要把noAccessToBodies)。

答案 1 :(得分:0)

我有MySQL服务器版本:5.1.52
我的SQL Connector jar:mysql-connector-java-5.1.7-bin.jar
Tomcat:7.0.27.0
JDK 1.6.0.18

通过添加noAccessToProcedureBodies=true解决了上述问题,它对我有用!