sql >> Database >  >> RDS >> Mysql

SqlNullValueException bij het uitvoeren van een opgeslagen procedure met MySqlCommand

Dit lijkt op een bug in Oracle's MySQL Connector/NET (ook bekend als MySql.Data ). Het ziet er niet uit als een bug die ik ken in die bugdatabase; het moet mogelijk worden ingediend als een nieuwe uitgave. (Bug 75301 lijkt op elkaar, maar het is niet meteen duidelijk dat het hetzelfde probleem is.)

Ik zou aanraden om over te schakelen naar MySqlConnector ; het is een alternatieve ADO.NET-bibliotheek voor MySQL die uitstekend compatibel is met Dapper en verhelpt veel bekende bugs in MySQL-connector/NET. MySqlConnector heeft ook echte asynchrone I/O-ondersteuning, die niet geïmplementeerd is in Connector/NET; dit is belangrijk als u QueryAsync . wilt gebruiken in je code.

Als u de MySQL Connector/NET van Oracle wilt blijven gebruiken, kunt u het probleem mogelijk omzeilen door CheckParameters=false toe te voegen. naar uw verbindingsreeks. Houd er rekening mee dat dit een baanbrekende verandering kan zijn naar uw code; als u de instelling instelt op false, moet u er handmatig voor zorgen dat de parameters die aan elke CommandType.StoredProcedure zijn toegevoegd, MySqlCommand bevinden zich in exact dezelfde volgorde als de database (omdat MySql.Data ze niet langer voor u zal repareren).

Bijwerken: Na het bekijken van de Connector/NET-broncode, lijkt het erop dat uw database gegevens bevat die hij niet verwacht. Produceert een van de volgende twee query's rijen? Zo ja, welke waarde(n) zijn 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;

Welke MySQL-server gebruikt u (MySQL, MariaDB, Amazon Aurora) en welke versie?




  1. Verbindingspooling in .NET/SQL-server?

  2. Hoe een tijdelijke kolom te gebruiken in de waar-clausule?

  3. SQL Server Database Back-up Encryptie

  4. MariaDB POWER() uitgelegd