Łączę się z bazą danych MySQL (5.08) uruchomioną na komputerze z systemem Linux z aplikacji internetowej działającej w tomcat.Nie można wykonać procedury przechowywanej MySQL z Java
otrzymuję następujący wyjątek, gdy próbuję wykonać procedurę przechowywaną:
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
Po zainstalowaniu mysql na maszynie. Dałem follwing opcje grantowe wykorzenić
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)
w klasie java ..
Łączę się db następująco:
String url = "jdbc:mysql://ipaddress:3306/test";
con = DriverManager.getConnection(url,"root", "pass");
Próbowałem również z url noAccessToProcedureBodies=true
w zestawie.
Czy ktoś może mi powiedzieć, co jest nie tak? Czy jest coś, co muszę sprawdzić?
Przepraszam, że dotacja powinna być odczytywana *. * Zamiast. –
Uważam, że DOTACJE MySQL nie zawsze działają tak, jak można się spodziewać. Czasem zdarzało mi się, że rzeczy działają, jeśli używasz konkretnych uprawnień GRANT zamiast *. * – skaffman