Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Eine gespeicherte MySQL-Prozedur kann nicht von Java ausgeführt werden

Es gibt zwei Möglichkeiten, dies zu lösen:

  1. Setzen Sie noAccessToProcedureBodies=true der Verbindung Eigenschaft

    Zum Beispiel als Teil der Verbindungszeichenfolge:

    jdbc:mysql://ipaddress:3306/test?noAccessToProcedureBodies=true
    

    Der JDBC-Treiber erstellt dann "INOUT"-Strings für die Argumente, ohne dass Metadaten erforderlich sind, wie in der Ausnahme angegeben.

  2. Gewähren Sie SELECT Privilegien auf mysql.proc an den Datenbankbenutzer

    Zum Beispiel in der mysql-Eingabeaufforderung:

    GRANT SELECT ON mysql.proc TO 'user'@'localhost';
    

    Dies würde es der Anwendung natürlich ermöglichen, die gesamte mysql.proc zu lesen Tabelle, die Informationen über alle enthält gespeicherte Prozeduren in alle Datenbanken (einschließlich Quellcode).