21 mayo 2009

Gracias Christophe Grenier y TestDisk!


Hehehe, desde acá, mi más humilde aplauso para Christophe Grenier y su software TestDisk, que una vez más me arreglaron la máquina para poder seguir trabajando.
Otro aplauso igualmente merecido para la gente de SystemRescueCd, que gracias a su recopilación de utilidades, pude usar el TestDisk para arreglar la máquina.
En breve, se rompió la información de las particiones después de tratar de cargar el Windows Vista que venía en la máquina y luego tratar de arrancar el Ubuntu 8.04 que vengo usando normalmente. Grub arreglado (no más "Error 22"), información de particiones correcta, ahora puedo seguir usando la máquina tranquilo.
Hasta la próxima!

PD: Feliz cumpleaños Markitos!!

05 mayo 2009

MySQL REPLACE / INSERT ... ON DUPLICATE KEY

Pequeño tip para MySQL: En lugar de escribir "REPLACE ...", también podemos usar un "INSERT ... ON DUPLICATE KEY ... "
En un suspiro, resulta que el enunciado "REPLACE" siempre se ejecuta como un "DELETE" seguido de un "INSERT" cuando ya existe una fila con esa clave primaria o una índice unique. Por otro lado, el "INSERT ... ON DUPLICATE KEY" se ejecuta como un "INSERT" común y, si la clave primaria o el índice unique están duplicados, realiza un "UPDATE".
Un ejemplo extraído de la documentación: Si la columna "a" se define como UNIQUE y contiene el valor "1"
  • "INSERT INTO table (a,b,c) VALUES (1,2,3)
    ON DUPLICATE KEY UPDATE c=c+1;"
  • "UPDATE table SET c=c+1 WHERE a=1;"
Las dos sentencias hacen exactamente lo mismo. Hay que tener cuidado que si el WHERE devuelve varias filas, sólo la primera se actualiza.

Hasta la próxima!