Ошибка: выберите команду отклонена пользователю ''@'' для таблицы ''
-
16-10-2019 - |
Вопрос
На моем сайте я использую базу данных MySQL. Я использую веб -сервис, где я делаю все свои манипуляции, связанные с базой данных.
Теперь в одном из методов этого веб -сервиса я получаю следующую ошибку.
Выберите команду отказано пользователю ''@'' для таблицы ''
Что может быть не так?
Ниже приведен код, где я получаю эту ошибку. Я попытался отлаживать и обнаружил, что он терпит неудачу на линии
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();
Решение
У пользователя базы данных нет разрешения на выбор запроса.
Вы можете предоставить разрешение пользователю, если у вас есть корневой доступ к MySQL
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 + "'";
И пользователь, с которым вы подключаетесь, не имеет разрешения на доступ к данным из этой базы данных или этой конкретной таблицы.
Вы рассматриваете эту вещь?
Другие советы
Я уверен, что проблема оригинального плаката давно была решена. Тем не менее, у меня была та же проблема, поэтому я подумал, что объясню, что вызывает эту проблему для меня.
Я делал вопрос профсоюза с двумя таблицами - «foo» и «foo_bar». Однако в моем заявлении SQL у меня была опечатка: 'foo.bar'
Таким образом, вместо того, чтобы сказать мне, что таблица «foo.bar» не существует, сообщение об ошибке указывает на то, что команда была отклонена - как будто у меня нет разрешений.
Надеюсь, это кому -то поможет.
Выберите команду отказано пользователю ''@'' для таблицы ''
Эта проблема в основном генерируется после того, как условие соединения - неправильное имя базы данных в вашем запросе соединения. Поэтому, пожалуйста, проверьте свой запрос SELECT в имени таблицы соединения после базы данных.
Затем решить, например, его правильная посуда ANS
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' ) ";
Таблица соединения imputable
а также applyleave
В той же базе данных, но онлайн -имя базы данных отличается от этой проблемы.
Эта проблема произошла со мной, потому что у меня было hibernate.default_schema
Установите в другую базу данных, чем в данных в данных.
Будучи строгим в моих разрешениях на пользователь MySQL, когда Hibernate попытался запросить таблицу, он запросил тот, что в hibernate.default_schema
База данных, для которой пользователь не имел разрешений.
К сожалению, MySQL неправильно указывает базу данных в этом сообщении об ошибке, так как это сразу же очистило бы.
Вам нужно предоставить разрешения на выбор разрешения пользователю MySQL, который подключается к MySQL. Видеть:
http://dev.mysql.com/doc/refman/5.0/en/privilege-system.html
http://dev.mysql.com/doc/refman/5.0/en/user-account-management.html
У меня было точно такое же сообщение об ошибке, выполняющее экспорт базы данных через продолжение Pro на Mac. Я был пользователем root, поэтому я знал, что это не разрешения. Затем я попробовал это с MySqldump и получил другое сообщение об ошибке: Получите ошибку: 1449: Пользователь, указанный как Definer ('joey'@'127.0.0.1') не существует при использовании таблиц блокировки
Ааа, я восстановил эту базу данных из резервной копии на сайте DEV, и я не создал этого пользователя на этой машине. "Glate All на . до 'joey'@'127.0.0.1' Определено «Joeypass»; "Сделал трюк.
hth
Если вы работаете из приложения Windows Forms, это работает для меня "Server = localhost; пользователь идентификатор = dbuser; password = password; database = dbname; используйте процедуры Bodies = false;"
Просто добавьте «использование процедурных тел = false» в конце вашей строки концепции.
Проблема, скорее всего, между. и _. Скажи в моем запросе, я поставил
Выберите ..... из location.pt
вместо
Выберите ..... из location_pt
Поэтому я думаю, что MySQL считает местоположение как имя базы данных и давал ошибку привилегий доступа.
У меня такая же проблема. Это связано с Hibernate. Я изменил базу данных с Dev на производство в hibernate.cfg.xml, но в других файлах HBM.XML был атрибут каталога с именем старой базы данных, и это вызывает проблему.
Вместо того, чтобы сообщать неверное имя базы данных, оно показало ошибку разрешения отказано.
Поэтому обязательно измените имя базы данных повсюду или просто удалите атрибут каталога
У меня такая же проблема. Я очень расстраивался с этим. Может быть, это не отвечает на вопрос, но я просто хочу поделиться своим опытом ошибок, и могут быть другие, которые пострадали, как я. Очевидно, это была моя низкая точность.
У меня было это:
SELECT t_comment.username,a.email FROM t_comment
LEFT JOIN (
SELECT username,email FROM t_un
) a
ON t_comment.username,a.email
что должно быть так:
SELECT t_comment.username,a.email FROM t_comment
LEFT JOIN (
SELECT username,email FROM t_un
) a
ON t_comment.username=a.username
Затем моя проблема была решена в тот день, я боролся через два часа, просто за эту проблему.
Немного опоздал на вечеринку, но если у вас есть корневой доступ, вы можете сделать следующее напрямую:
Войдите в свой MySQL как root,
$ mysql -u root -p
Показать базы данных;
mysql>SHOW DATABASES;
Выберите базу данных MySQL, где находится все привилегии
mysql>USE mysql;
Показать столы.
mysql>SHOW TABLES;
Таблица, касающаяся привилегий для вашего дела: «DB», так что давайте посмотрим, какие столбцы у него есть:
mysql>DESC db;
Чтобы перечислить привилегии пользователей, введите следующую команду, например:
mysql>SELECT user, host, db, Select_priv, Insert_priv, Update_priv, Delete_priv FROM db ORDER BY user, db;
Если вы не можете найти этого пользователя или если вы видите, что у этого пользователя есть 'n' в столбце select_priv, то вы должны либо вставить, либо обновить соответствующим образом:
ВСТАВЛЯТЬ:
INSERT INTO db (Host,Db,User,Select_priv,Insert_priv,Update_priv,Delete_priv) VALUES ('localhost','DBname','UserName','Y' ,'N','N','N');
ОБНОВИТЬ:
UPDATE db SET Select_priv = 'Y' WHERE User = 'UserName' AND Db = 'DBname' AND Host='localhost';
Наконец, введите следующую команду:
mysql>FLUSH PRIVILEGES;
Чао.
Похоже на другие ответы, которые я пропустил, напечатал запрос.
Я имел -
SELECT t.id FROM t.table LEFT JOIN table2 AS t2 ON t.id = t2.table_id
Должно было
SELECT t.id FROM table AS t LEFT JOIN table2 AS t2 ON t.id = t2.table_id
MySQL пытался найти базу данных под названием T, на которую у пользователя не было разрешения.