Simply.com is available in english

Prisijungimas prie MySQL su .NET Connector

Kodo pavyzdys: prisijungimas prie MySQL per .NET Connector ir klaidos 'SELECT command denied' sprendimas su Use Procedure Bodies=false connection string'e.

Šį kodo pavyzdį galima naudoti norint pasiekti MySQL duomenų bazę per MySQL .NET Connector:

Galite patys įkelti MySQL tvarkyklę į savo žiniatinklio talpinimo planą – ją galima atsisiųsti iš MySQL svetainės.

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();

Klaida: SELECT command denied to user 'user'@'x' for table 'proc'

Priežastis – klaida MySQL tvarkyklėje. Dokumentuota čia:
http://bugs.mysql.com/bug.php?id=10640
http://bugs.mysql.com/bug.php?id=16703
http://bugs.mysql.com/bug.php?id=14836

Procesas bando vykdyti SELECT sakinį proc lentelėje. Ši 'proc' lentelė yra sisteminė lentelė, kurioje saugomos visų MySQL serverio vartotojų procedūros. Naudojant bendrąjį talpinimą, prieiga prie šios lentelės kelia problemų, nes prieiga suteiktų klientams galimybę matyti vienas kito procedūras.

Galimas problemos sprendimas – pakeisti savo connection string, kad jame būtų "Use Procedure Bodies=false".

Pvz.:
"server=localhost; user id=dbuser; password=password; database=dbname; Use Procedure Bodies=false;"

Straipsnis iš palaikymo kategorijos: ASP & ASP.NET