mysql - 无法使用 LOAD DATA INFILE 将数据加载到 MySQL 数据库

标签 mysql load-data-infile

我在 Ubuntu 12.04 中使用 LAMP。我在 MySQL (myserver@localhost) 中创建了一个新用户,并将数据库上的 ALL 权限授予该用户。有一个文本文件,其权限设置为所有人都可以阅读。但是当我尝试将数据从该文本文件加载到数据库时,它显示“用户 'myserver'@'localhost' 的访问被拒绝(使用密码:YES)”

我使用的查询是:

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

我可以想到在 PHP 中使用一些循环的解决方法,但为什么“LOAD DATA INFILE”不起作用?

谢谢。

最佳答案

这是由于您在 Ubuntu LTS 12.04 中使用的 MYSQL 5.5 版本:mysql doc

来自 mysql 文档评论:

You can use LOAD DATA LOCAL with recent versions of PHP without recompiling PHP.

Passing 128 (the value of the CLIENT_LOCAL_FILES constant) as the fifth parameter to mysql_connect () enables LOAD DATA LOCAL on the client side.

Example: $dbh = mysql_connect($server, $user, $pass, false, 128);

For PHP 4.3 and above.

但实际上,mysql_connect()已经过时了,我找不到使用mysqli的解决方案。

这就是我最终使用 this 的原因谁来解决问题。

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

现在 $mysqli->query("LOAD DATA INFILE '".$proxy_file_name_path."' IGNORE INTO TABLE mytable (myfield)"

关于mysql - 无法使用 LOAD DATA INFILE 将数据加载到 MySQL 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11014508/

相关文章:

php - 上游在读取来自上游的响应 header 时过早地关闭了 FastCGI stdout

php、pdo mysql 无法使用内连接插入

java - 无法连接MySQL数据库: No suitable driver found

mysql - 当表具有 BIGINT 且唯一的列时,mysql LOAD DATA 出现问题

mysql - LOAD DATA INFILE 在 mariadb 中不起作用

PHP mySQL 不允许我插入到表中

mysql - 将 bool 列转换为整数

mysql - secure-file-priv 阻止 INTO OUTFILE 命令

mysql - LOAD DATA LOCAL INFILE 给出错误 The used command is not allowed with this MySQL version

sas - 带有标题的 sas 中的 infile .csv 文件