Cela ressemble à un bogue dans MySQL Connector/NET d'Oracle (alias MySql.Data
). Cela ne ressemble à aucun bogue que je connaisse dans cette base de données de bogues; il faudra peut-être le classer comme un nouveau numéro. (Bogue 75301
semble similaire, mais il n'est pas immédiatement évident qu'il s'agit du même problème.)
Je recommanderais de passer à MySqlConnector
; c'est une bibliothèque ADO.NET alternative pour MySQL qui a une grande compatibilité avec Dapper et corrige de nombreux bogues connus
dans MySQL Connector/NET. MySqlConnector a également une véritable prise en charge des E/S asynchrones, qui n'est non implémentée
dans Connecteur/NET ; cela sera important si vous souhaitez utiliser QueryAsync
dans votre code.
Si vous souhaitez continuer à utiliser MySQL Connector/NET d'Oracle, vous pourrez peut-être contourner le problème en ajoutant CheckParameters=false
à votre chaîne de connexion. Notez que il peut s'agir d'un changement avec rupture à votre code ; si vous définissez le paramètre sur false, vous devrez vous assurer manuellement que les paramètres ajoutés à chaque CommandType.StoredProcedure
MySqlCommand
sont exactement dans le même ordre que la base de données (car MySql.Data ne les corrigera plus pour vous).
Mise à jour : Après avoir examiné le code source de Connector/NET, il apparaît que votre base de données contient des données auxquelles elle ne s'attendait pas. L'une des deux requêtes suivantes produit-elle des lignes ? Si oui, quelle(s) valeur(s) sont 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;
Quel serveur MySQL utilisez-vous (MySQL, MariaDB, Amazon Aurora) et quelle version ?