Det här ser ut som en bugg i Oracles MySQL Connector/NET (alias MySql.Data
). Det ser inte ut som någon bugg som jag är bekant med i den buggdatabasen; det kan behöva arkiveras som en ny fråga. (Bug 75301
ser likadant ut men det är inte direkt uppenbart att det är samma problem.)
Jag skulle rekommendera att byta till MySqlConnector
; det är ett alternativt ADO.NET-bibliotek för MySQL som har stor kompatibilitet med Dapper och fixar många kända buggar
i MySQL Connector/NET. MySqlConnector har också stöd för äkta async I/O, vilket är inte implementerat
i Connector/NET; detta kommer att vara viktigt om du vill använda QueryAsync
i din kod.
Om du vill fortsätta använda Oracles MySQL Connector/NET kan du kanske lösa problemet genom att lägga till CheckParameters=false
till din anslutningssträng. Observera att det här kan vara en avbrytande förändring till din kod; om du ställer in inställningen till false måste du manuellt se till att parametrarna som läggs till i varje CommandType.StoredProcedure
MySqlCommand
är i exakt samma ordning som databasen (eftersom MySql.Data inte längre fixar dem åt dig).
Uppdatering: Efter att ha tittat på Connector/NET-källkoden verkar det som om din databas har vissa data som den inte förväntar sig. Ger någon av följande två frågor rader? Om så är fallet, vilka värden är 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;
Vilken MySQL-server använder du (MySQL, MariaDB, Amazon Aurora) och vilken version?