Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Não é possível executar um procedimento armazenado MySQL a partir de Java


Existem duas maneiras de resolver isso:

  1. defina o noAccessToProcedureBodies=true da conexão propriedade

    Por exemplo, como parte da string de conexão:
    jdbc:mysql://ipaddress:3306/test?noAccessToProcedureBodies=true
    

    O driver JDBC criará strings "INOUT" para os argumentos sem exigir metadados, como diz a exceção.

  2. Conceder SELECT privilégios em mysql.proc para o usuário do banco de dados

    Por exemplo, no prompt do mysql:
    GRANT SELECT ON mysql.proc TO 'user'@'localhost';
    

    É claro que isso permitiria que o aplicativo lesse todo o mysql.proc tabela que contém informações sobre todos procedimentos armazenados em todos bancos de dados (incluindo código-fonte).