Изглежда, че това е грешка в Connector/NET, подобно на бъг 75301
но малко по-различно. Когато се опитва да определи метаданните на параметрите за процедурата, първо създава MySqlSchemaCollection
с име Procedures
с всички метаданни за процедурата. (Това е SELECT * FROM information_schema.routines WHERE 1=1 AND routine_schema LIKE 'Spike' AND routine_name LIKE 'TestAccess'
заявка, която виждате в дневника си.)
Spike
потребителският акаунт няма разрешение да чете ROUTINE_DEFINITION
колона, така че е NULL
. Connector/NET очаква това поле да не е NULL и хвърля SqlNullValueException
изключение се опитва да го прочете.
Има две решения:
1) Първото, което открихте, е да зададете CheckParameters=False
във вашия низ за връзка. Това ще деактивира извличането на метаданни на съхранените процедури (избягване на срива), но може да доведе до по-трудни за отстраняване на грешки проблеми при извикване на други съхранени процедури, ако не получите точно реда и типа на параметрите. (Connector/NET вече не може да ги картографира вместо вас, използвайки метаданните.)
2) Превключете към друга библиотека ADO.NET MySQL, която няма тази грешка:MySqlConnector на NuGet . Той е силно съвместим с Connector/NET, работи по-бързо и коригира много известни проблеми .