我在 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/