これは、バグ75301
と同様に、Connector/NETのバグのようです。 しかし、少し異なります。プロシージャのパラメータメタデータを決定しようとすると、最初にMySqlSchemaCollection
が作成されます。 名前付きProcedures
すべて 手順に関するメタデータ。 (これはSELECT * FROM information_schema.routines WHERE 1=1 AND routine_schema LIKE 'Spike' AND routine_name LIKE 'TestAccess'
ログに表示されるクエリ。)
Spike
ユーザーアカウントには、ROUTINE_DEFINITION
を読み取る権限がありません 列なので、NULL
。 Connector / NETは、このフィールドがNULL以外であることを想定し、SqlNullValueException
をスローします。 読み込もうとした例外。
2つの回避策があります:
1)最初に発見したのは、CheckParameters=False
を設定することです。 接続文字列で。これにより、ストアドプロシージャのメタデータの取得が無効になります(クラッシュを回避できます)が、パラメータの順序とタイプが正確に正しくない場合、他のストアドプロシージャを呼び出すときにデバッグが困難になる可能性があります。 (Connector / NETは、メタデータを使用してそれらをマップできなくなりました。)
2)このバグがない別のADO.NET MySQLライブラリに切り替えます: MySqlConnector NuGet で 。 Connector / NETとの互換性が高く、パフォーマンスが速く、多くの既知の問題 。