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

Mindestzugriffsebenen zum Ausführen von gespeicherten MySql-Prozeduren

Dies scheint ein Fehler in Connector/NET zu sein, ähnlich dem Fehler 75301 aber etwas anders. Wenn es versucht, Parametermetadaten für die Prozedur zu bestimmen, erstellt es zuerst eine MySqlSchemaCollection namens Procedures mit allen Metadaten über das Verfahren. (Dies ist SELECT * FROM information_schema.routines WHERE 1=1 AND routine_schema LIKE 'Spike' AND routine_name LIKE 'TestAccess' Abfrage, die Sie in Ihrem Protokoll sehen.)

Der Spike Benutzerkonto hat keine Berechtigung zum Lesen der ROUTINE_DEFINITION Spalte, also ist es NULL . Connector/NET erwartet, dass dieses Feld nicht NULL ist und löst eine SqlNullValueException aus Ausnahme beim Versuch, es zu lesen.

Es gibt zwei Problemumgehungen:

1) Die erste, die Sie entdeckt haben, ist das Setzen von CheckParameters=False in Ihrer Verbindungszeichenfolge. Dadurch wird das Abrufen von Metadaten gespeicherter Prozeduren deaktiviert (wodurch der Absturz vermieden wird), es kann jedoch zu schwieriger zu debuggenden Problemen beim Aufrufen anderer gespeicherter Prozeduren führen, wenn Sie die Reihenfolge und den Typ der Parameter nicht genau richtig einstellen. (Connector/NET kann sie nicht mehr mithilfe der Metadaten für Sie zuordnen.)

2) Wechseln Sie zu einer anderen ADO.NET-MySQL-Bibliothek, die diesen Fehler nicht aufweist:MySqlConnector auf NuGet . Es ist hochkompatibel mit Connector/NET, arbeitet schneller und behebt viele bekannte Probleme .