Me estoy conectando a una base de datos MySQL (5.08) que se ejecuta en una máquina Linux desde una aplicación web que se ejecuta en tomcat.No se puede ejecutar un procedimiento almacenado de MySQL desde Java
tengo la siguiente excepción cuando trato de ejecutar un procedimiento almacenado:
com.hp.hpl.chaos.web.exception.DBException: getNextValue for operatorinstance[Additional Information from SQL Exception][SQLErrorCode: 0 SQLState: S1000
at com.hp.hpl.chaos.web.util.SQLUtil.getNextValue(SQLUtil.java:207)
..............
Caused by: 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 com.mysql.jdbc.SQLError.createSQLException(SQLError.java:910)
at com.mysql.jdbc.DatabaseMetaData.getCallStmtParameterTypes(DatabaseMetaData.java:1619)
at com.mysql.jdbc.DatabaseMetaData.getProcedureColumns(DatabaseMetaData.java:4034)
at com.mysql.jdbc.CallableStatement.determineParameterTypes(CallableStatement.java:709)
at com.mysql.jdbc.CallableStatement.<init>(CallableStatement.java:513)
at com.mysql.jdbc.Connection.parseCallableStatement(Connection.java:4583)
at com.mysql.jdbc.Connection.prepareCall(Connection.java:4657)
at com.mysql.jdbc.Connection.prepareCall(Connection.java:4631)
at com.hp.hpl.chaos.web.util.SQLUtil.getNextValue(SQLUtil.java:196)
... 17 more
Después de instalar MySQL en la máquina. Me he dado las opciones de subvención siguientes aparatos para erradicar
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'pass';
Query OK, 0 rows affected (0.00 sec)
mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)
En la clase java ..
lo voy a conectar a la base de datos de la siguiente manera:
String url = "jdbc:mysql://ipaddress:3306/test";
con = DriverManager.getConnection(url,"root", "pass");
También he probado la url con el noAccessToProcedureBodies=true
opción incluida.
¿Alguien me puede decir lo que está mal aquí? ¿Hay algo que deba verificar?
siento que la concesión debería leer *. * En lugar de. –
Creo que los GRANTs de MySQL no siempre funcionan como cabría esperar. A veces descubrí que las cosas funcionan si usa permisos específicos de GRANT en lugar de *. * – skaffman