sql >> Databasteknik >  >> RDS >> Mysql

Kan inte köra en MySQL-lagrad procedur från Java

Det finns två sätt att lösa detta:

  1. ställ in anslutningens noAccessToProcedureBodies=true egendom

    Till exempel som en del av anslutningssträngen:

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

    JDBC-drivrutinen kommer sedan att skapa "INOUT"-strängar för argumenten utan att kräva metadata som undantaget säger.

  2. Ge SELECT privilegier på mysql.proc till databasanvändaren

    Till exempel i mysql-prompten:

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

    Naturligtvis skulle detta tillåta applikationen att läsa hela mysql.proc tabell som innehåller information om alla lagrade procedurer i alla databaser (inklusive källkod).



  1. SQL Server, den vilseledande XLOCK &optimeringar

  2. Returnera alla främmande nycklar &KONTROLLERA begränsningar i en SQL Server-databas (T-SQL-exempel)

  3. mysql välj id och namn från den andra tabellen och gå med i frågan

  4. Hur tar man bort från flera tabeller i MySQL?