sql >> Base de Datos >  >> RDS >> Mysql

SqlNullValueException al ejecutar un procedimiento almacenado con MySqlCommand

Esto parece un error en MySQL Connector/NET de Oracle (también conocido como MySql.Data ). No parece ningún error con el que esté familiarizado en esa base de datos de errores; es posible que deba archivarse como un problema nuevo. (Error 75301 parece similar, pero no es inmediatamente obvio que se trate del mismo problema).

Recomendaría cambiar a MySqlConnector ; es una biblioteca ADO.NET alternativa para MySQL que tiene una gran compatibilidad con Dapper y corrige muchos errores conocidos en MySQL Connector/NET. MySqlConnector también tiene compatibilidad real con E/S asíncrona, que no está implementada en Conector/RED; esto será importante si desea utilizar QueryAsync en tu código.

Si desea seguir usando MySQL Connector/NET de Oracle, es posible que pueda solucionar el problema agregando CheckParameters=false a su cadena de conexión. Tenga en cuenta que este podría ser un cambio importante a su código; si establece la configuración en falso, deberá asegurarse manualmente de que los parámetros agregados a cada CommandType.StoredProcedure MySqlCommand están exactamente en el mismo orden que la base de datos (porque MySql.Data ya no los arreglará).

Actualización: Después de mirar el código fuente de Connector/NET, parece que su base de datos tiene algunos datos que no espera. ¿Alguna de las siguientes dos consultas produce filas? Si es así, qué valores son 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;

¿Qué servidor MySQL está utilizando (MySQL, MariaDB, Amazon Aurora) y qué versión?