为什么这个MYSQL语句给我一个错误?

mysql> LOAD DATA INFILE '/home/myuser/myproject/power/ids-ads.txt' INTO TABLE ids_ads FIELDS TERMINATED BY '\t' LINES TERMINATED BY '\n'; ERROR 29 (HY000): File '/home/myuser/myproject/power/ids-ads.txt' not found (Errcode: 13) 

该文件在那里。 我甚至把path粘贴到mysql控制台。 权限是正确的。

实际上,我甚至在root用户和root用户上testing了它。

 -rw-r--r-- 1 myuser myuser 15893 2010-12-26 20:56 ids-ads.txt 

请注意,当您执行LOAD DATA INFILE时,MySQL正在服务器上查找该文件,而不是在客户机上。

如果要使用LOAD DATA INFILE加载客户端计算机(而不是服务器计算机)上的文件,则必须使用LOAD DATA LOCAL INFILE。

http://dev.mysql.com/doc/refman/5.1/en/load-data.html

从MySQL手册:

 For security reasons, when reading text files located on the server, the files must either reside in the database directory or be readable by all. Also, to use LOAD DATA INFILE on server files, you must have the FILE privilege. For non-LOCAL load operations, if the secure_file_priv system variable is set to a nonempty directory name, the file to be loaded must be located in that directory. 

http://dev.mysql.com/doc/refman/5.1/en/load-data.html

嗯…可能是一个愚蠢的问题,但有没有在字符串'/ home…/ids-ads.txt'中的任何不可见的字符?

正如Marc B所说,文件需要位于数据库目录中,或者全部可读。 该文件不仅需要可读,而且MySQL需要读取存储文本文件的目录的权限。 / home / myuser / myproject / power /上的许可权限和/ home / myuser的许可权限是多少? 如果在该链的任何一点,权限将被拒绝,那么MySQL将无法读取该文件。

如果您使用的是phpmyadmin,请确保启用Use LOCAL keyword 。 这对我有效。