2010-12-27 14 views
5
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) 

El archivo está ahí. Incluso pegué el camino en la consola mysql. Los permisos son correctos.¿Por qué esta declaración MYSQL me da un error?

De hecho, incluso lo probé en usuario root y raíz mysql.

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

¿Los archivos están en la misma máquina? ¿No es una montura ni nada por el estilo? – Steve

+0

Solo una máquina. configuración muy simple – TIMEX

+0

¿Y no hay espacios en el nombre del proyecto? – Steve

Respuesta

6

Tenga en cuenta que cuando carga LOAD DATA INFILE, MySQL está buscando ese archivo en el servidor - no en su máquina cliente.

Si desea utilizar LOAD DATA INFILE para cargar un archivo que está en la máquina del cliente (y no en la máquina del servidor), debe usar LOAD DATA LOCAL INFILE.

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

0

Hmmm ... probablemente una pregunta estúpida, pero ¿hay personajes invisibles en la cadena '/home.../ids-ads.txt'?

+0

No lo creo. parece texto bastante regular. – TIMEX

2

Desde el manual de 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

0

Como dijo Marc B, el archivo debe estar en el directorio de base de datos o legible por todos. No solo es necesario que el archivo sea legible, sino que MySQL necesita permisos para leer en el directorio donde está almacenado el archivo de texto. ¿Cuáles son los permisos en/home/myuser/myproject/power/y sus contenedores hasta/home/myuser? Si, en cualquier punto de esa cadena, se denegara el permiso, entonces MySQL no podrá leer el archivo.

0

Si está utilizando phpmyadmin, asegúrese de habilitar Use LOCAL keyword. Esto funcionó para mí.

Cuestiones relacionadas