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.rpmLeer más...
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...
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...