de webmaster a webmaster

Error con LOAD DATA LOCAL INFILE en MySql

con 4 comentarios, ¡esto se mueve!

Menudo bugazo de MySQLos hemos encontrado hoy! Este bug porque sí, porque lo es ya que tiene toda la pinta de ser un bicho nos ha traído de cabeza durante dos días. Si ya pensaba yo que esto de que Oracle salga de compras no nos iba a traer nada pero nada bueno, en fin webmaster of the universe os ponemos en antecedentes:

Estamos ultimando la v.3.9 del sistema de tiendas online ecOOmmerce.com en ella hemos incorporado una función que realiza las actualizador de precios y de stock semiautomatizado donde el cliente en base a un fichero bajo formato .csv (parecido al excel, realmente es un txt con campos separados por un signo) puede desde el backoffice de la actualizar los precios de una tacada.

El servidor alojado en Hispalab corre Linux con versión 5.0.90 instalada. Nosotros disponemos acceso al Cpanel para administrar, si bien no podemos acceder a consola por SSH ni a través de Cpanel.

Intentamos hacer un típico LOAD DATA LOCAL INFILE para cargar datos de un fichero .csv en una tabla temporal de la base de datos que posteriormente será analizada por nuestra nueva función y actualizará los precios.

La sentencia es la típica, reportada en cientos y cientos de foros de tanto en español como en lengua sajona:

LOAD DATA LOCAL INFILE “/home/dominios/test/public_html/tmp/tarifatest.csv” INTO TABLE table01 FIELDS TERMINATED BY “;” LINES TERMINATED BY “\n”

Y desde la aplicación no recibimos error alguno, para acotar el tema vamos al Phpmyadmin a través de Cpanel y copypasteamos el comando, automáticamente nos escupe el siguiente error:

#1148 – The used command is not allowed with this MySQL version

Repasamos la sentencia de mil quinientas veces y es entonces cuando el ingeniero de sistemas de Hispalab nos dice que no utilicemos el “LOCAL”. Nos documentamos y si, una vez el archivo está en servidor no hace falta utilizar el argumento “LOCAL” ahora bien, al modificar esta función nos encontramos con otro nuevo error:

#1045 – Access denied for user ‘wwwtest’@’localhost’ (using password: YES)

Así que comenzamos primero desde y luego desde FTP (no tenemos acceso a consola) ha realizar todo tipo de CHMODS y CHOWN para cambiar los permisos y propietarios de el archivo y la carpeta subida. No conseguimos nada más que perder el tiempo.

Desolados reportamos a Hispalab y al final y tras casi dos días de darnos cabezazos contra el teclado alguien vio la luz en Hispalab, ese LOCAL, ese LOCAL, lo probó en minúsculas “local” y… como bien dijo el “zasss…. todo funcionó”.

Impresionante, ni en la propia documentación de MySQL figura ni una sóla vez en minúsculas, puedes verlo en:

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

En fin, hay queda este post por si alguna vez oss encontráis con semejante problema.

Be Sociable, Share!

4 respuesta to 'Error con LOAD DATA LOCAL INFILE en MySql'

Subscríbete a estos comentarios via RSS or TrackBack a 'Error con LOAD DATA LOCAL INFILE en MySql'.

  1. No lo pude solucionar por acá, sino quitándole el LOCAL y aún así, tampoco daba a la primera. Lo solucioné instalando una utilidad que se llama apparmor-utils, y haciendo

    sudo aa-complain /usr/sbin/mysqld

    Luego,

    sudo aa-logprof

    y por último

    sudo aa-enforce /usr/sbin/mysqld

    No he investigado más (no he tenido tiempo), así lo solucioné, y espero que le ayude al que pueda

    Edwin Hurtado

    22 Jan 13 at 19:24

  2. Gracias por tu aporte, no obstante según experiencias posteriores la solución correcta depende mucho de la versión de MySQL que estés usando por lo que te rogaría que especificases en un nuevo comentario la versión exacta de MySQL que estás corriendo así como el sistema operativo.

    uvedobles.com

    22 Jan 13 at 19:30

  3. GRACIAS… TOTALES…

    Leonardo

    17 Sep 14 at 03:28

  4. Casi me parto la cabeza. Miles de gracias

    Marcela torres

    17 Nov 15 at 22:27

Deja aquí tu comentario, tu huella, o mejor ingrésame unos euros