Zdá se, že se jedná o chybu v Connectoru/NET, podobnou chybě 75301
ale trochu jinak. Když se pokouší určit metadata parametru pro proceduru, nejprve vytvoří MySqlSchemaCollection
s názvem Procedures
se všemi metadata o postupu. (Toto je SELECT * FROM information_schema.routines WHERE 1=1 AND routine_schema LIKE 'Spike' AND routine_name LIKE 'TestAccess'
dotaz, který vidíte ve svém protokolu.)
Spike
uživatelský účet nemá oprávnění ke čtení ROUTINE_DEFINITION
sloupec, takže je NULL
. Connector/NET očekává, že toto pole nebude NULL, a vyvolá SqlNullValueException
výjimka se to pokouší přečíst.
Existují dvě řešení:
1) První, co jste objevili, je nastavit CheckParameters=False
ve vašem připojovacím řetězci. To zakáže načítání metadat uložené procedury (předejde se tak havárii), ale může to vést k obtížnějším laditelným problémům s voláním jiných uložených procedur, pokud přesně nezjistíte pořadí a typ parametrů. (Connector/NET je již nemůže mapovat pomocí metadat.)
2) Přepněte na jinou knihovnu ADO.NET MySQL, která tuto chybu neobsahuje:MySqlConnector na NuGet . Je vysoce kompatibilní s Connector/NET, funguje rychleji a opravuje spoustu známé problémy .