Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Minimalne poziomy dostępu do uruchomienia procedury składowanej MySql

Wygląda na to, że jest to błąd w Connector/NET, podobny do błąd 75301 ale trochę inaczej. Kiedy próbuje określić metadane parametrów dla procedury, najpierw tworzy MySqlSchemaCollection o nazwie Procedures ze wszystkimi metadane dotyczące procedury. (To jest SELECT * FROM information_schema.routines WHERE 1=1 AND routine_schema LIKE 'Spike' AND routine_name LIKE 'TestAccess' zapytanie, które widzisz w swoim dzienniku).

Spike konto użytkownika nie ma uprawnień do odczytu ROUTINE_DEFINITION kolumna, więc jest to NULL . Connector/NET oczekuje, że to pole będzie inne niż NULL i zgłasza SqlNullValueException wyjątek próbujący go przeczytać.

Istnieją dwa obejścia:

1) Pierwszym, który odkryłeś, jest ustawienie CheckParameters=False w ciągu połączenia. Spowoduje to wyłączenie pobierania metadanych procedur składowanych (uniknięcie awarii), ale może prowadzić do trudniejszych do debugowania problemów z wywoływaniem innych procedur składowanych, jeśli kolejność i typ parametrów nie zostaną dokładnie ustawione. (Łącznik/NET nie może już ich mapować za pomocą metadanych).

2) Przełącz się na inną bibliotekę ADO.NET MySQL, która nie ma tego błędu:MySqlConnector na NuGet . Jest wysoce kompatybilny z Connector/NET, działa szybciej i naprawia wiele znane problemy .



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Konwertuj dane wyjściowe zapytania MySQL na utf8

  2. PDO::PARAM dla typu dziesiętnego?

  3. Błąd importowania Pythona MySQLdb — Mac 10.6

  4. Najlepszy typ danych do przechowywania wartości walut w bazie danych MySQL

  5. Jak usunąć kolumnę z tabeli w MySQL za pomocą numeru kolumny?