Actualizar MySQL 5.1 en CentOS/RHEL via Yum

publicado por Carlos Torres el 01/06/2013 13:22

Procedimiento para actualizar de la versión 5.0 a la 5.1 de Mysql en Centos o ReHat 5.x

Antes de nada, hacer dump de las bases de datos por si pasara algo...

Instalar del repositorio Webtatic EL5.1 para CentOS/RHEL 5.x:

$rpm -Uvh http://mirror.webtatic.com/yum/el5/latest.rpm
Leer más...

Problemas con campos blobs sin valor por defecto en MySQL

publicado por Miguel Angel Fernández el 10/04/2013 12:19

Los campos BLOB de MySQL son ideales para almacenar objetos serializados, el problema es que en su construcción no puedes aplicarles un valor por defecto (ni siquiera null) y al realizar un INSERT de la fila sin rellenar el campo, el sistema te devuelve un error de que el campo no tiene un "default value":

SQL Error (1364): Field 'CAMPO_BLOB' doesn't have a default value

Este problema es debido a que la configuración de SQL de MySQL está en modo estricto (strict mode) y he podido notar que esto ocurre en las instalaciones bajo Windows.

Podemos desactivar esta propiedad y el error se convertirá en un warning de la siguiente manera:

En el fichero my.cnf cambiar la variable: 

sql_mode="STRICT_TRANS_TABLES,otras,listas,de,opciones"

Eliminando el valor "STRICT_TRANS_TABLES".

Tambien lo podemos hacer a traves de una sentencia SQL:

SET @@global.sql_mode = "";
Leer más...

Intercambiar los valores de dos columnas en MySQL

publicado por Miguel Angel Fernández el 02/10/2012 09:09

Alguna vez he tenido que intercambiar los valores de dos columnas de una base de datos por diversas razones, (tarifas equivocadas, idiomas de contenidos, etc...).

Para hacer esto lo habitual es crear una tabla temporal, llevar el contenido a esta tabla, y entonces empezar a realizar las asignaciones. MySQL nos permite realizar todo esto en un solo paso, ya que el se encargará de crear esa tabla temporal de la siguiente manera:

UPDATE tabla_ejemplo SET campo1=campo2, campo2=campo1;

Esto funciona muy bien, excepto si alguno de los campos es NULL, para poder realizar esto de una manera sin problemas con los campos NULL, mejor lo hacemos así:

UPDATE tabla_ejemplo SET campo1=campo2, campo2=@temp WHERE (@temp:=campo1) IS NOT NULL;
Leer más...