de webmaster a webmaster

Archive for the ‘Utilidades de sistema’ Category

Error con LOAD DATA LOCAL INFILE en MySql

without comments

al rico bug 480x360 Error con LOAD DATA LOCAL INFILE en MySql

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 aplicación actualizar los precios de una tacada.

El servidor web alojado en Hispalab corre Linux con Mysql 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 desarrollo 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 SQL 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 PHP 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.

Habilitar cURL en Ubuntu

without comments

curl 480x329 Habilitar cURL en Ubuntu

La imagen que acompaña este post-nota no tiene mucho que ver con el contenido pues es muy surfera aunque pensándolo bien algo sí, ¿o no?, ¿tú que opinas?

La utilidad básica de cURL es esa leer información de diferentes protocolos, escribo este artículo porque la necesito para una classe bajo PHP que permite  integrar el motor de traducción de idiomas de Google en una de mis aplicaciones web.

Mi configuración actual es Apache2 + PHP5 en un entorno Ubuntu 9.10 Karmic 64 Bits donde si realizo un phpinfo(); no me figura módulo alguno para usar las librerías de php para cURL necesarias para algunas classes php que toman datos de APIs externas.

Además de un módulo para PHP es un comando ejecutable desde línea de comando por ejemplo:

curl www.google.com

Te mostrará en la terminal el código HTML que hay tras esa dirección.

Instalar las librerías cURL para PHP

Os comento el proceso de habilitar cURL en mi versión de Ubuntu.

Lo primero es darte una vuelta por el archivo de configuración de PHP el famoso php.ini , para ello ejecuta en un terminal:

sudo nano /etc/php5/apache2/php.ini

Obviamente si no dispones del editor nano instalado o te es más cómodo el más visual gedit sustituye nano por gedit, eso sí nano es una excelente opción que merece la pena aprender a utilizar pues la podrás utilizar en servidores donde no tengas entorno gráfico, hay seguidores incondicionales de VI pero yo no lo soy en absoluto y prefiero nano.

También ten en cuenta que ese comando puede variar dependiendo de donde se encuentre el php.ini en tu máquina o si la versión de PHP o del Apache difieren.

Una vez dentro busca la cadena “curl” en Nano se hace presionando CTRL + W, si no la encuentras es que cURL no está instalado en tu sistema o en tu servidor, así que toca instalarlo, sal del editor, CTRL + Q y vamos de nuevo a la línea de comando para instalar cURL en Ubuntu:

sudo apt-get install php5-curl

Ahora se bajará los paquetes necesarios y comenzará el proceso de instalación. Una vez finalizado tan sólo te quedará reiniciar el servicio Apache2 con:

sudo /etc/init.d/apache2 restart

¡A programar!

Cambiar clave root a Mysql por línea de comandos Windows

without comments

Esta guía ha sido realizada con una captura de Windows 2003 si bien una vez nos logamos a mysql como root los comandos son los mismos para cualquier sistema operativo que disponga de MySQL funcionando.

Vamos a cambiar la clave del root al sistema de bases de datos MySQL desde la línea de comando o símbolo de sistema de Windows, ten en cuenta que la clave Root del MySQL es la clave más potente y por norma general no puede ser cambiada mediante phpMyAdmin ni ningún otro sistema cómodo, este cambio debe realizarse desde la consola de sistema para ello deberás abrir un termina, si estás en Windows deberás abrir una ventana de sistema o ventana MS-DOS que te permita ejecutar el monitor de MySQL, para ello desde tu menú realiza la siguiente secuencia de clics hasta que te aparezca una venta de Símbolo de sistema:

Inicio > Todos los programas > Accesorios > Símbolo de sistema

cambiar clave mysql win2003 479x302 Cambiar clave root a Mysql por línea de comandos Windows

Y partir de aquí, ejecuta los siguientes comandos (en negrita) pulsando la tecla enter tras escribirlos para que se ejecuten:

mysql -u root -p

A lo que el servidor te pedirá la clave actual de Root, introdúcela y pulsa enter

Ahora se te mostrará el prompt: “mysql>”

Debemos decirle a mysql que vamos a trabajar sobre la base de datos general, que se llama mysql y es la que contiene los privilegios de los diferentes usuarios.

Teclea el siguiente comando sin olvidarte el punto y coma del final:

use mysql;

Ahora hemos de ejecutar una sentencia Update de MySQL para modificar la clave del usuario root fíjate en el siguiente comando:

update user set password=PASSWORD(“nuevaclave”) where user=’root’;

Por ejemplo si la clave que queremos poner a root es “difiLisisisi89Ma” el comando sería:

update user set password=PASSWORD(“difiLisisisi89Ma”) where user=’root’;

Anótate bien esa clave y ahora vamos a recargar los privilegios en el servidor de base de datos con el comando Flush. Teclea:

FLUSH PRIVILEGES;

Y ahora a salir del monitor de MySQL

quit

Written by dedavid

April 5th, 2010 at 8:25 am