【发布时间】:2012-10-02 01:43:26
【问题描述】:
我们的一端有一个 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,即使该错误应该被修复。
有人遇到过这种情况吗?我想我做错了什么,每个人都说它应该有效,但对我来说却没有。
提前致谢!
【问题讨论】:
-
您是否检查了该用户的数据库权限?因为我遇到过类似的异常,并通过为数据库中的 db 用户分配权限来解决
-
我们有权执行每个函数和过程。我认为我们甚至没有对 mysql.proc 的读取权限,而且我们不会被允许拥有它。
-
这里已经回答了这个问题:[Can't execute a MySQL stored procedure from Java][1] [1]: stackoverflow.com/questions/986628/…
标签: java mysql tomcat jdbc mysql-connector