Ошибка: выберите команду отклонена пользователю ''@'' для таблицы ''

StackOverflow https://stackoverflow.com/questions/4767055

Вопрос

На моем сайте я использую базу данных 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, на которую у пользователя не было разрешения.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top