Existe una posibilidad que no sé si la han abarcado, y puede darse si el usuario utilizado para acceder a la base no es el
root, o bien no tiene los privilegios adecuados:
Cita: Por razones de seguridad, al leer ficheros de texto localizados en el servidor, los ficheros deben residir en el directorio de la base de datos o ser legibles por todo el mundo. Además, para usar LOAD DATA INFILE en ficheros del servidor, debe tener el permiso FILE .
El detalle es que si estás intentando acceder a un servidor remoto y en ese servidor el usuario no tiene privilegios FILE no podrás acceder a un archivo. En el caso de hacerlo en un servidor local, el problema base es el mismo: privilegios FILE.
Ahora bien, el privilegio de tipo FILE es un privilegio de alto nivel que se debe otorgar en forma expresa. No sirve usar GRANT ALL PRIVILEGES TO..., porque FILE no está incluido en ... ALL...
Ten en cuenta otra cosa, en el caso de usar el
root: El root, a pesar de ser el root, no suele poseer los privilegios CREATE ROUTINE y FILE en remoto. Sólo suelen ser locales.
Ver
Cuestiones de seguridad con LOAD DATA.
Hay una posibilidad de no necesitarlo, y es:
Cita: Usar LOCAL es un poco más lento que dejar al servidor acceder al fichero directamente, porque el contenido del fichero debe enviarse por la conexión desde el cliente al servidor . Por otra parte, no necesita el permiso FILE para cargar ficheros locales.
A esto hay que recordar:
Esto usa una
ruta absoluta del servidor. Si estás en remoto, no funcionará.
Esto funciona si el servidor es remoto y " '/home/alexander/pet.txt' " se refiere a tu PC.
Esto funciona si el servidor es remoto y sólo si el archivo se encuentra en la misma carpeta de la base de datos.