There are two ways to solve this:
set the connection's noAccessToProcedureBodies=true
property
For example as part of the connection string:
jdbc:mysql://ipaddress:3306/test?noAccessToProcedureBodies=true
The JDBC driver will then create "INOUT" strings for the arguments without requiring meta data like the exception says.
Grant SELECT
privileges on mysql.proc
to the database user
For example in the mysql prompt:
GRANT SELECT ON mysql.proc TO 'user'@'localhost';
Of course this would allow the application to read the entire mysql.proc
table that contains information about all stored procedures in all databases (including source code).
Following steps worked for me in mysql
Step 1 : add follwong
Connection con = DriverManager.getConnection("jdbc:mysql://ipaddress:3306/logparser?noAccessToProcedureBodies = true ",
"root", "");
Step 2 :
GRANT ALL ON logparser
.proc
TO root@'%'; where logparser is DB name and proc is procedure name.
Running below queries should fix your issue.
GRANT <SELECT, CREATE, UPDATE, DELETE, ALL> PRIVILEGES ON mysql.proc TO '<user>'@'%';
FLUSH PRIVILEGES;
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With