Ошибка импорта файла .sql в phpMyAdmin [дубликат]

Поскольку вам нужно присоединиться к dirname с помощью x, os.listdir() просто перечисляет содержимое напрямую, содержимое не имеет полного пути.

Пример -

[x for x in os.listdir('dirname') if os.path.isfile(os.path.join('dirname',x))]

Когда полный путь не указан, os.path.isfile() выполняет поиск в текущем каталоге, поэтому, когда вы даете '.' на os.listdir(), вы получаете правильный список назад.


Пример -

Допустим, что в некоторой папке /a/b/c есть файлы - x и y.

, когда вы делаете - os.listdir('/a/b/c'), возвращаемый список выглядит как -

['x','y']

Даже если вы укажете абсолютный путь внутри os.listdir(), файлы, возвращенные в списке, будут иметь относительный путь к директории. Вам нужно вручную подключиться к dir и x, чтобы получить правильные результаты.


В вашем третьем примере это не работает, потому что os.path.abspath() также работает с текущим каталогом, поэтому, если вы это сделаете что-то вроде -

os.path.abspath('somefile')

Полученный результат будет - /path/to/current/directory/somefile - он не проверяет, является ли это реальным файлом / dir или нет.

documentation (Emphasis mine) -

os.path.abspath (path)

Возвращает нормированную абсолютизированную версию пути пути. На большинстве платформ это эквивалентно вызову функции normpath () следующим образом: normpath(join(os.getcwd(), path)).

blockquote>

, где os.getcwd() возвращает путь к текущему рабочему каталогу.

42
задан halfer 17 May 2017 в 17:50
поделиться

12 ответов

пользователь базы данных не имеет права на выполнение запроса select.

вы можете предоставить разрешение пользователю, если у вас есть root-доступ к 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 + "'";

И пользователь, с которым вы подключаетесь, не имеет права доступа к данным из этой базы данных или этой конкретной таблицы.

Считаете ли вы эту вещь?

21
ответ дан Shakti Singh 20 August 2018 в 11:15
поделиться

У меня была та же проблема. Это связано с спящим режимом. Я изменил базу данных с dev на производство в файле hibernate.cfg.xml, но в других файлах hbm.xml со старым именем базы данных был атрибут каталога, и это вызывало проблему.

Вместо того, чтобы сообщать неправильное имя базы данных, она обнаружила ошибку, разрешенную Permission.

Поэтому не забудьте изменить имя базы данных всюду или просто удалить атрибут каталога

1
ответ дан deepika 20 August 2018 в 11:15
поделиться

Вам необходимо предоставить разрешения SELECT для пользователя 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

3
ответ дан gregjor 20 August 2018 в 11:15
поделиться

У меня была та же проблема. Я был очень расстроен этим. Возможно, это не отвечает на вопрос, но я просто хочу поделиться своим опытом с ошибками, и могут быть другие, которые страдали, как я. Очевидно, это была моя низкая точность.

У меня было это:

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

Тогда моя проблема был разрешен в этот день, я боролся через два часа, только для этого вопроса.

0
ответ дан Juna serbaserbi 20 August 2018 в 11:15
поделиться
  • 1
    Как и в случае с Pisces22 (и мной), еще одна проблема, которая фактически не имела никакого отношения к разрешениям повторного сообщения. (Примечание: у других такое же сложное видение этого различия, как и у вас, так для других: в предложении ON исправлено ,a.email до =a.username) – Doug_Ivison 14 June 2016 в 13:31

Эта проблема произошла со мной, потому что у меня был hibernate.default_schema установлен в другую базу данных, чем та, что в DataSource.

Будучи строгим в моих разрешениях пользователя mysql, когда hibernate пытался запросить таблицу, запросил ту, которая была в базе данных hibernate.default_schema, для которой у пользователя не было разрешений.

. К сожалению, mysql неправильно указывает базу данных в этом сообщении об ошибке, так как это сразу прояснило бы ситуацию.

5
ответ дан muttonUp 20 August 2018 в 11:15
поделиться
  • 1
    У меня был атрибут каталога, установленный на неправильное имя схемы в XML-сопоставлении старого приложения - разный вкус, но в конце концов такой же преступник. Спасибо, что указал мне в правильном направлении. – Giulio Piancastelli 12 May 2016 в 08:35

Немного поздно, но если у вас есть root-доступ, вы можете сделать следующее напрямую:

Войдите в свой 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:

INSERT INTO db (Host,Db,User,Select_priv,Insert_priv,Update_priv,Delete_priv) VALUES ('localhost','DBname','UserName','Y' ,'N','N','N');

UPDATE:

UPDATE db SET Select_priv = 'Y' WHERE User = 'UserName' AND Db = 'DBname' AND Host='localhost';

Наконец, введите следующую команду:

mysql>FLUSH PRIVILEGES;

Ciao.

0
ответ дан Pathros 20 August 2018 в 11:15
поделиться

Я уверен, что проблема с оригинальным плакатом давно решена. Тем не менее, у меня была такая же проблема, поэтому я подумал, что объясню, что вызвало эту проблему для меня.

Я делал запрос объединения с двумя таблицами - «foo» и «foo_bar». Однако в моей инструкции SQL у меня была опечатка: «foo.bar»

Итак, вместо того, чтобы сообщать мне, что таблица «foo.bar» не существует, сообщение об ошибке указывает, что команда было отклонено - как будто у меня нет разрешений.

Надеюсь, это кому-то поможет.

121
ответ дан pisces22 20 August 2018 в 11:15
поделиться
  • 1
    была та же проблема – Mark Steudel 8 February 2014 в 00:17
  • 2
    Хорошо поймал! Я искал разрешение пользователя вместо опечаток. – Olivier.Roger 21 February 2014 в 12:24
  • 3
  • 4
    Это было также основной причиной для меня, опечатка. С точки зрения безопасности имеет смысл дать отказ в доступе, потому что, если взломщик пытается определить имена таблиц, попробовав различные имена, получающие ошибку «не существует», укажет, какие имена таблиц действительно существуют, в какой момент они может применить грубую силу для определения имени пользователя и пароля. В моем опыте, как простые имена пользователей и пароли (обычно & lt; 10 символов словарных слов concat'd), вероятно, это не займет много времени ... – Kurt Wagner 24 September 2015 в 16:21
  • 5
    В моем случае это произошло потому, что некоторый код запроса (например, данные) был скопирован из базы данных SQL Server, а dbo. не работал в базе данных MySQL: когда dbo.tablename был изменен на tablename, он выполняется без ошибок. – Doug_Ivison 14 June 2016 в 13:35

Проблема, скорее всего, между a. и _. Скажем, в моем запросе я положил

SELECT ..... FROM LOCATION.PT

вместо

SELECT ..... FROM LOCATION_PT

Итак, я думаю, что MySQL будет думать, что LOCATION является именем базы данных и дает прав доступа к привилегии.

1
ответ дан Reza 20 August 2018 в 11:15
поделиться

Как и другие ответы, я пропустил запрос.

У меня было -

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

-1
ответ дан sebtucknott 20 August 2018 в 11:15
поделиться

У меня было то же сообщение об ошибке, выполняющее экспорт базы данных через Sequel Pro на mac. Я был пользователем root, поэтому я знал, что это не разрешения. Затем я попробовал его с mysqldump и получил другое сообщение об ошибке: Получил ошибку: 1449: Пользователь, указанный как определитель ('joey'@'127.0.0.1'), не существует при использовании LOCK TABLES

Ahh, я восстановил эту базу данных из резервной копии на сайте dev, и я не создал этого пользователя на этом компьютере. «предоставить все на . на« joey'@'127.0.0.1 », идентифицированный« joeypass »;» сделал трюк.

hth

2
ответ дан superaesomedad 20 August 2018 в 11:15
поделиться

команда select, запрещенная пользователю '' @ '' для таблицы ''

Эта проблема является по существу сгенерированной после условия соединения неправильным именем базы данных в вашем запросе соединения. Поэтому, пожалуйста, проверьте ваш запрос выбора в имени таблицы соединений после базы данных.

Затем разрешите его, например, его правильную ans ware

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

4
ответ дан Tristan 20 August 2018 в 11:15
поделиться

, если вы работаете в приложении Windows Forms, это сработало для меня «server = localhost; user id = dbuser; password = password; database = dbname; Use Procedure Bodies = false;»

просто добавить в конце строки коннекта введите «Use Procedure Bodies = false».

2
ответ дан Veelicus 20 August 2018 в 11:15
поделиться
Другие вопросы по тегам:

Похожие вопросы: