Почему я получаю сообщение об ошибке при использовании LOAD DATA INFILE?

Я пытаюсь использовать SQL загрузить csv файл с моего ноутбука в базу данных, однако я получаю странную ошибку. Код, который я печатаю в окне SQL в phpMyAdmin, выглядит следующим образом:

LOAD DATA INFILE '/Users/myMac/testServerUpload.csv' 
INTO TABLE `testDatabase` 
FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n'

Но я получаю следующую ошибку:

Error

SQL query:

LOAD DATA INFILE '/Users/myMac/testServerUpload.csv' INTO TABLE `testDatabase` FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n'

MySQL said: Documentation
#1045 - Access denied for user 'ukld'@'%' (using password: YES) 

Должен ли я использовать LOAD DATA LOCAL INFILE вместо моей текущей команды, поскольку файл находится на моем компьютере? Оба дают мне ошибку, и я подумал LOCAL может означать, что это на сервере. Я не мог найти соответствующий совет, ищущий эту ошибку.

2 ответа

У меня была такая же проблема, и я решил ее, используя LOCAL и указав полный путь к файлу:

'C:/directory/file.csv' 

Кажется, ошибка 1045 происходит из-за отсутствия доступа к файлам на сервере, где mySQL ищет файл, если не указано LOCAL.

Смотрите также:

Вам нужно войти как root и запустить:

SHOW GRANTS FOR 'ukld'@'%';

Скорее всего, у вас нет разрешений, которые, как вы думаете, у вас есть... вам нужны привилегии INSERT для БД и таблиц, в которые вы пытаетесь LOAD DATA,


ОБНОВИТЬ:

Чтобы исправить проблему GRANT, запустите эти операторы как root в вашей установке MySQL:

REVOKE SELECT, INSERT, UPDATE, DELETE, CREATE,
       DROP, INDEX, ALTER, CREATE TEMPORARY TABLES,
       LOCK TABLES, EXECUTE, CREATE VIEW, SHOW VIEW,
       CREATE ROUTINE, ALTER ROUTINE
       ON ukld.* FROM 'ukld'@'%';

GRANT SELECT, INSERT, UPDATE, DELETE, CREATE,
       DROP, INDEX, ALTER, CREATE TEMPORARY TABLES,
       LOCK TABLES, EXECUTE, CREATE VIEW, SHOW VIEW,
       CREATE ROUTINE, ALTER ROUTINE
       ON ukld.* TO 'ukld'@'%' IDENTIFIED BY PASSWORD 'xxx';

FLUSH PRIVILEGES;

Убедитесь, что вы установили правильный пароль во втором утверждении.

Другие вопросы по тегам