Невозможно загрузить данные в базу данных 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)"