sql >> Database teknologi >  >> RDS >> Mysql

SqlNullValueException ved udførelse af en lagret procedure med MySqlCommand

Dette ligner en fejl i Oracles MySQL Connector/NET (aka MySql.Data ). Det ligner ikke nogen fejl, som jeg er bekendt med i den fejldatabase; det skal muligvis arkiveres som et nyt problem. (Bug 75301 ligner, men det er ikke umiddelbart indlysende, at det er det samme problem.)

Jeg vil anbefale at skifte til MySqlConnector ; det er et alternativt ADO.NET-bibliotek til MySQL, der har stor kompatibilitet med Dapper og retter mange kendte fejl i MySQL Connector/NET. MySqlConnector har også ægte async I/O-understøttelse, som ikke er implementeret i Connector/NET; dette vil være vigtigt, hvis du vil bruge QueryAsync i din kode.

Hvis du vil fortsætte med at bruge Oracles MySQL Connector/NET, kan du muligvis løse problemet ved at tilføje CheckParameters=false til din forbindelsesstreng. Bemærk, at dette kan være en brydende ændring til din kode; hvis du indstiller indstillingen til falsk, skal du manuelt sikre, at parametrene tilføjet til hver CommandType.StoredProcedure MySqlCommand er i nøjagtig samme rækkefølge som databasen (fordi MySql.Data ikke længere vil rette dem op for dig).

Opdatering: Efter at have set på Connector/NET-kildekoden, ser det ud til, at din database har nogle data, den ikke forventer. Frembringer en af ​​de følgende to forespørgsler rækker? Hvis ja, hvilke værdi(er) er 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;

Hvilken MySQL-server bruger du (MySQL, MariaDB, Amazon Aurora) og hvilken version?




  1. Oracle REPLACE()-funktionen håndterer ikke vognretur og linjefeeds

  2. MySQL unicode bogstaver

  3. Værdien af ​​data over tid

  4. Minimering af virkningen af ​​DBCC CHECKDB:DO'er og DONT'er