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

Niveles mínimos de acceso para ejecutar el procedimiento almacenado MySql

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 .