Esto parece ser un error en Connector/NET, similar al error 75301
pero un poco diferente. Cuando intenta determinar los metadatos de parámetros para el procedimiento, primero crea una MySqlSchemaCollection
llamado Procedures
con todos metadatos sobre el procedimiento. (Este es el SELECT * FROM information_schema.routines WHERE 1=1 AND routine_schema LIKE 'Spike' AND routine_name LIKE 'TestAccess'
consulta que ve en su registro).
El Spike
la cuenta de usuario no tiene permiso para leer ROUTINE_DEFINITION
columna, por lo que es NULL
. Connector/NET espera que este campo no sea NULL y lanza una SqlNullValueException
excepción tratando de leerlo.
Hay dos soluciones:
1) El primero, que ha descubierto, es establecer CheckParameters=False
en su cadena de conexión. Esto deshabilitará la recuperación de los metadatos del procedimiento almacenado (evitando el bloqueo), pero puede generar problemas más difíciles de depurar al llamar a otros procedimientos almacenados si no obtiene el orden y el tipo de parámetros exactamente correctos. (Connector/NET ya no puede mapearlos usando los metadatos).
2) Cambie a una biblioteca ADO.NET MySQL diferente que no tenga este error:MySqlConnector en NuGet . Es altamente compatible con Connector/NET, funciona más rápido y corrige muchos problemas conocidos .