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 .