Mysql
 sql >> база данни >  >> RDS >> Mysql

Минимални нива на достъп за изпълнение на съхранената процедура на MySql

Изглежда, че това е грешка в 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, работи по-бързо и коригира много известни проблеми .



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Проверка на обхвата на Mysql вместо използване на индекс при вътрешно присъединяване

  2. Не може да се предаде параметър 2 чрез препратка - uuid PDO

  3. Как да комбинирате две заявки за актуализиране с различно условие къде

  4. ImportError:Няма модул с име connector.conversion

  5. Откриване на събития за заспиване и събуждане на ОС в Java