Forbindelse til MySQL med .NET Connector
Kodeeksempel på forbindelse til MySQL via .NET Connector, og løsning på 'SELECT command denied'-fejl via Use Procedure Bodies=false i connection string.
Følgende kodeeksempel kan benyttes til at opnå adgang til en MySQL Database igennem MySQL's .NET Connector:
Du kan selv deploy MySQL driveren til dit webhotel, den kan hentes fra MySQL's hjemmeside.
using MySql.Data.MySqlClient;
MySqlConnection con = new MySqlConnection();
string mysql = "Server=[server];Database=[database];User=[brugernavn];pwd=[password]";
con.ConnectionString = mysql;
con.Open();
MySqlCommand cmd = con.CreateCommand();
cmd.CommandText = "SELECT * FROM TestTabel";
cmd.Connection = con;
MySqlDataReader reader = cmd.ExecuteReader();
while (reader.Read())
{
Response.Write(reader.GetValue(0).ToString());
}
cmd.Dispose();
con.Close();
Fejl: SELECT command denied to user 'user'@'x' for table 'proc'
Årsagen er en fejl i MySQL driveren. Dokumenteret her:
http://bugs.mysql.com/bug.php?id=10640
http://bugs.mysql.com/bug.php?id=16703
http://bugs.mysql.com/bug.php?id=14836
En proces forsøger at udføre en SELECT-sætning på proc tabellen. Denne 'proc' tabel er en system tabel, som opbevarer procedures for alle brugere på MySQL serveren. På delt hosting er adgang til denne tabel et problem, da adgang vil give kunder mulighed for at se hinandens procedures.
En mulig løsning på problemet er at ændre ens connection string, så den indeholder "Use Procedure Bodies=false".
Eks:
"server=localhost; user id=dbuser; password=password; database=dbname; Use Procedure Bodies=false;"
Artikel fra support-kategorien: ASP & ASP.NET