sql >> Databáze >  >> RDS >> Mysql

Minimální úrovně přístupu ke spuštění uložené procedury MySql

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 .



  1. Zpracování nepřečtených příspěvků v PHP / MySQL

  2. Použití vláken k vytváření požadavků na databázi

  3. Verze php-mysql je v konfliktu se serverem Mysql

  4. Mac OS X - EnvironmentError:mysql_config nebyl nalezen