Невозможно загрузить данные в базу данных MySQL с помощью LOAD DATA INFILE

Я использую LAMP в Ubuntu 12.04. Я создал нового пользователя в MySQL (myserver@localhost) и предоставил этому пользователю ВСЕ в базе данных. Существует текстовый файл, разрешение которого настроено на чтение для всех. Но когда я пытаюсь загрузить данные из этого текстового файла в базу данных, появляется сообщение "Доступ запрещен для пользователя" myserver "@" localhost "(с использованием пароля: ДА)"

Запрос, который я использовал:

LOAD DATA INFILE "~/text/member_info.txt" INTO TABLE member FIELDS TERMINATED BY '|';

Я могу придумать обходной путь с некоторыми циклами в PHP, но почему не работает "LOAD DATA INFILE"?

Благодарю.

1 ответ

Решение

Это связано с версией MYSQL 5.5, которую вы используете в Ubuntu LTS 12.04: mysql doc

Из комментария к документу MySQL:

Вы можете использовать LOAD DATA LOCAL с последними версиями PHP без перекомпиляции PHP.

Передача 128 (значение константы CLIENT_LOCAL_FILES) в качестве пятого параметра в mysql_connect () включает LOAD DATA LOCAL на стороне клиента.

Пример: $dbh = mysql_connect($server, $user, $pass, false, 128);

Для PHP 4.3 и выше.

Но на самом деле mysql_connect () устарел, и я не могу найти решение, используя mysqli.

Вот почему я, наконец, использую это, чтобы решить проблему.

grant file on *.* to mydatabase@localhost identified by 'myuser';

Теперь $mysqli->query("LOAD DATA INFILE '".$ Proxy_file_name_path. "' IGNORE INTO TABLE mytable (MyField)"

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