Simply.com is available in english

Csatlakozás a MySQL-hez .NET Connectorral

Kódpélda MySQL-kapcsolatra .NET Connector használatával, és a 'SELECT command denied' hiba megoldása a connection string Use Procedure Bodies=false opciójával.

A következő kódpélda használható egy MySQL adatbázis eléréséhez a MySQL .NET Connector segítségével:

A MySQL illesztőprogramot (drivert) magad is telepítheted a webtárhelyedre, a MySQL weboldaláról tölthető le.

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

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

Ennek oka a MySQL driverben lévő hiba. Itt dokumentálva:
http://bugs.mysql.com/bug.php?id=10640
http://bugs.mysql.com/bug.php?id=16703
http://bugs.mysql.com/bug.php?id=14836

Egy folyamat megpróbál végrehajtani egy SELECT utasítást a proc táblán. Ez a 'proc' tábla egy rendszertábla, amely a MySQL szerveren lévő összes felhasználó eljárásait (procedures) tárolja. Megosztott tárhelyen ezen tábla elérése problémát jelent, mivel a hozzáférés lehetővé tenné az ügyfelek számára, hogy egymás eljárásait megtekinthessék.

A probléma egyik lehetséges megoldása, ha úgy módosítod a connection stringet, hogy az tartalmazza a "Use Procedure Bodies=false" beállítást.

Példa:
"server=localhost; user id=dbuser; password=password; database=dbname; Use Procedure Bodies=false;"

Cikk a támogatási kategóriából: ASP & ASP.NET