Dit lijkt een bug te zijn in Connector/NET, vergelijkbaar met bug 75301
maar een beetje anders. Wanneer het probeert om parametermetadata voor de procedure te bepalen, maakt het eerst een MySqlSchemaCollection
genaamd Procedures
met alle metagegevens over de procedure. (Dit is de SELECT * FROM information_schema.routines WHERE 1=1 AND routine_schema LIKE 'Spike' AND routine_name LIKE 'TestAccess'
vraag die u in uw logboek ziet.)
De Spike
gebruikersaccount heeft geen toestemming om de ROUTINE_DEFINITION
. te lezen kolom, dus het is NULL
. Connector/NET verwacht dat dit veld niet-NULL is en genereert een SqlNullValueException
uitzondering die het probeert te lezen.
Er zijn twee oplossingen:
1) De eerste, die je hebt ontdekt, is om CheckParameters=False
in te stellen in uw verbindingsreeks. Hierdoor wordt het ophalen van metadata van opgeslagen procedures uitgeschakeld (waardoor de crash wordt vermeden), maar dit kan leiden tot moeilijker te debuggen problemen met het aanroepen van andere opgeslagen procedures als de volgorde en het type parameters niet precies goed zijn. (Connector/NET kan ze niet langer voor u in kaart brengen met behulp van de metadata.)
2) Schakel over naar een andere ADO.NET MySQL-bibliotheek die deze bug niet heeft:MySqlConnector op NuGet . Het is zeer compatibel met Connector/NET, presteert sneller en lost veel bekende problemen .