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

SqlNullValueException beim Ausführen einer gespeicherten Prozedur mit MySqlCommand

Dies sieht nach einem Fehler in MySQL Connector/NET von Oracle (alias MySql.Data) aus ). Es sieht nicht nach einem Fehler aus, mit dem ich in dieser Fehlerdatenbank vertraut bin; es muss möglicherweise als neues Problem eingereicht werden. (Fehler 75301 sieht ähnlich aus, aber es ist nicht sofort ersichtlich, dass es sich um dasselbe Problem handelt.)

Ich würde empfehlen, zu MySqlConnector zu wechseln; Es ist eine alternative ADO.NET-Bibliothek für MySQL, die hervorragend mit Dapper und behebt viele bekannte Fehler im MySQL Connector/NET. MySqlConnector hat auch echte asynchrone E/A-Unterstützung, die nicht implementiert ist in Konnektor/NET; Dies ist wichtig, wenn Sie QueryAsync verwenden möchten in Ihrem Code.

Wenn Sie weiterhin MySQL Connector/NET von Oracle verwenden möchten, können Sie das Problem möglicherweise umgehen, indem Sie CheckParameters=false hinzufügen zu Ihrer Verbindungszeichenfolge. Beachten Sie, dass dies eine bahnbrechende Änderung sein könnte zu Ihrem Code; Wenn Sie die Einstellung auf „false“ setzen, müssen Sie manuell sicherstellen, dass die Parameter zu jeder CommandType.StoredProcedure hinzugefügt werden MySqlCommand sind in genau der gleichen Reihenfolge wie die Datenbank (weil MySql.Data sie nicht mehr für Sie repariert).

Aktualisierung: Nachdem Sie sich den Connector/NET-Quellcode angesehen haben, scheint es, dass Ihre Datenbank einige Daten enthält, die sie nicht erwartet. Erzeugt eine der beiden folgenden Abfragen Zeilen? Wenn ja, welche Werte sind NULL ?

SELECT * FROM information_schema.routines
WHERE specific_name IS NULL OR
    routine_schema IS NULL OR
    routine_name IS NULL OR
    routine_type IS NULL OR
    routine_definition IS NULL OR
    is_deterministic IS NULL OR
    sql_data_access IS NULL OR
    security_type IS NULL OR
    sql_mode IS NULL OR
    routine_comment IS NULL OR
    definer IS NULL;

SELECT * FROM mysql.proc
WHERE specific_name IS NULL OR
    db IS NULL OR
    name IS NULL OR
    type IS NULL OR
    body IS NULL OR
    is_deterministic IS NULL OR
    sql_data_access IS NULL OR
    security_type IS NULL OR
    sql_mode IS NULL OR
    comment IS NULL OR
    definer IS NULL;

Welchen MySQL-Server verwenden Sie (MySQL, MariaDB, Amazon Aurora) und welche Version?