sql >> データベース >  >> RDS >> Mysql

MySqlストアドプロシージャを実行するための最小アクセスレベル

    これは、バグ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との互換性が高く、パフォーマンスが速く、多くの既知の問題



    1. JDBCを使用してMySQLにselectを挿入します

    2. Androidデバイス用の安全なデータベースを実装するためのベストプラクティス

    3. MySQLがgroupbyで最大レコードを選択

    4. メタデータ検出ウィザードの使用