Par*_*att 57 mysql mysqldatareader mysql-error-1142
在我的网站上,我使用的是MySQL数据库.我正在使用webservice,在那里我做所有与数据库相关的操作.
现在,在该Web服务的一种方法中,我得到以下错误.
选择命令被拒绝用户''''为表'''
可能有什么不对?
下面是我得到该错误的代码.我试过调试,发现它在线路上失败了
MySqlDataReader result1 = command1.ExecuteReader();
这是我的代码:
String addSQL = "Select Max(`TradeID`) from `jsontest`.`tbl_Positions";
MySqlConnection objMyCon = new MySqlConnection(strProvider);
objMyCon.Open();
MySqlCommand command = objMyCon.CreateCommand();
command.CommandText = addSQL;
MySqlDataReader result = command.ExecuteReader();
//int j = command.ExecuteNonQuery();
while (result.Read())
{
MaxTradeID = Convert.ToInt32(result[0]);
}
objMyCon.Close();
for (i = 1; i <= MaxTradeID; i++)
{
String newSQL = "Select `Strike`,`LongShort`,`Current`,`TPLevel`,`SLLevel` from `json`.`tbl_Position` where `TradeID` = '" + i + "'";
MySqlConnection objMyCon1 = new MySqlConnection(strProvider);
objMyCon1.Open();
MySqlCommand command1 = objMyCon1.CreateCommand();
command1.CommandText = newSQL;
MySqlDataReader result1 = command1.ExecuteReader();
objMyCon2.Close();
Run Code Online (Sandbox Code Playgroud)
小智 146
我确信原始海报的问题早已得到解决.但是,我有同样的问题,所以我想我会解释导致这个问题的原因.
我正在用两个表进行联合查询 - 'foo'和'foo_bar'.但是,在我的SQL语句中,我有一个拼写错误:'foo.bar'
所以,而不是告诉我'foo.bar'表不存在,错误消息表明该命令被拒绝 - 好像我没有权限.
希望这有助于某人.
Sha*_*ngh 30
数据库用户没有执行选择查询的权限.
如果您具有对mysql的root访问权限,则可以向用户授予权限
http://dev.mysql.com/doc/refman/5.1/en/grant.html
您的第二个查询位于不同表上的不同数据库中.
String newSQL = "Select `Strike`,`LongShort`,`Current`,`TPLevel`,`SLLevel` from `json`.`tbl_Position` where `TradeID` = '" + i + "'";
Run Code Online (Sandbox Code Playgroud)
您正在连接的用户无权访问此数据库或此特定表中的数据.
你考虑过这个吗?
小智 9
选择拒绝表“”的用户“ @”的命令
此问题基本上是在联接条件中联接条件错误的联接名称中生成的。因此,请在数据库之后的联接表名称中检查您的选择查询。
然后解决它,例如其正确的软件
string g = " SELECT `emptable`.`image` , `applyleave`.`id` , `applyleave`.`empid` , `applyleave`.`empname` , `applyleave`.`dateapply` , `applyleave`.`leavename` , `applyleave`.`fromdate` , `applyleave`.`todate` , `applyleave`.`resion` , `applyleave`.`contact` , `applyleave`.`leavestatus` , `applyleave`.`username` , `applyleave`.`noday` FROM `DataEMP_ems`.`applyleave` INNER JOIN `DataEMP_ems`.`emptable` ON ( `applyleave`.`empid` = `emptable`.`empid` ) WHERE ( `applyleave`.`leavestatus` = 'panding' ) ";
Run Code Online (Sandbox Code Playgroud)
联接表是imputable和applyleave在同一数据库上,但在线数据库名称不同,则在此问题上给出了错误。
这个问题发生在我身上,因为我hibernate.default_schema设置的数据库与DataSource中的数据库不同.
严格我的mysql用户权限,当hibernate试图查询表时,它查询hibernate.default_schema数据库中用户没有权限的那个.
不幸的是,mysql没有在此错误消息中正确指定数据库,因为这样可以立即清除.
| 归档时间: |
|
| 查看次数: |
184220 次 |
| 最近记录: |