sql >> Databasteknik >  >> RDS >> Mysql

SqlNullValueException vid exekvering av en lagrad procedur med MySqlCommand

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?




  1. mysql sammanfoga frågeordning med två kolumner

  2. Släpp icke namngivna begränsningar

  3. När du använder Entity Framework med MySQL ersätts Unicode-tecken med grundläggande tecken

  4. Aggregera funktion i en SQL-uppdateringsfråga?