Wygląda to na błąd w Oracle MySQL Connector/NET (aka MySql.Data
). Nie wygląda na żaden znany mi błąd w tej bazie błędów; może być konieczne zgłoszenie nowego wydania. (Błąd 75301
wygląda podobnie, ale nie jest od razu oczywiste, że to ten sam problem.)
Polecam przejście na MySqlConnector
; jest to alternatywna biblioteka ADO.NET dla MySQL, która ma świetną kompatybilność z Dapperem i naprawia wiele znanych błędów
w MySQL Connector/NET. MySqlConnector ma również prawdziwą obsługę we/wy asynchronicznej, która nie jest zaimplementowana
w złączu/sieci; będzie to ważne, jeśli chcesz użyć QueryAsync
w kodzie.
Jeśli chcesz nadal używać Oracle MySQL Connector/NET, możesz obejść ten problem, dodając CheckParameters=false
do ciągu połączenia. Pamiętaj, że może to być przełomowa zmiana do twojego kodu; jeśli ustawisz to ustawienie na false, będziesz musiał ręcznie upewnić się, że parametry dodane do każdego CommandType.StoredProcedure
MySqlCommand
są w dokładnie tej samej kolejności co baza danych (ponieważ MySql.Data nie będzie ich już poprawiać za Ciebie).
Aktualizacja: Po przejrzeniu kodu źródłowego Connector/NET wydaje się, że Twoja baza danych zawiera pewne dane, których się nie spodziewa. Czy jedno z poniższych dwóch zapytań generuje wiersze? Jeśli tak, które wartości to NULL
?
SELECT * FROM information_schema.routines
WHERE specific_name IS NULL OR
routine_schema IS NULL OR
routine_name IS NULL OR
routine_type IS NULL OR
routine_definition IS NULL OR
is_deterministic IS NULL OR
sql_data_access IS NULL OR
security_type IS NULL OR
sql_mode IS NULL OR
routine_comment IS NULL OR
definer IS NULL;
SELECT * FROM mysql.proc
WHERE specific_name IS NULL OR
db IS NULL OR
name IS NULL OR
type IS NULL OR
body IS NULL OR
is_deterministic IS NULL OR
sql_data_access IS NULL OR
security_type IS NULL OR
sql_mode IS NULL OR
comment IS NULL OR
definer IS NULL;
Jakiego serwera MySQL używasz (MySQL, MariaDB, Amazon Aurora) i jakiej wersji?