sql >> Database teknologi >  >> RDS >> Mysql

Minimumsadgangsniveauer for at køre MySql-lagret procedure

Dette ser ud til at være en fejl i Connector/NET, der ligner bug 75301 men lidt anderledes. Når den forsøger at bestemme parametermetadata for proceduren, opretter den først en MySqlSchemaCollection navngivet Procedures med alle metadata om proceduren. (Dette er SELECT * FROM information_schema.routines WHERE 1=1 AND routine_schema LIKE 'Spike' AND routine_name LIKE 'TestAccess' forespørgsel, du ser i din log.)

Spike brugerkontoen har ikke tilladelse til at læse ROUTINE_DEFINITION kolonne, så den er NULL . Connector/NET forventer, at dette felt ikke er NULL og sender en SqlNullValueException undtagelse forsøger at læse den.

Der er to løsninger:

1) Den første, som du har opdaget, er at indstille CheckParameters=False i din forbindelsesstreng. Dette vil deaktivere hentning af metadata for lagrede procedurer (for at undgå nedbrud), men kan føre til problemer, der er sværere at fejlfinde ved at kalde andre lagrede procedurer, hvis du ikke får rækkefølgen og typen af ​​parametre helt rigtigt. (Connector/NET kan ikke længere kortlægge dem for dig ved hjælp af metadataene.)

2) Skift til et andet ADO.NET MySQL-bibliotek, der ikke har denne fejl:MySqlConnectorNuGet . Den er yderst kompatibel med Connector/NET, yder hurtigere og retter en masse kendte problemer .



  1. Sådan nulstiller du MySQL Root Users Password

  2. Import af excel-data i mysql-database

  3. Sammenligning af Entity Framework-kompatible udbydere til Oracle?

  4. Python - automatisering af MySQL-indeks:overføring af parameter