Luis LorenzoXingLinkedInInfolancerFacebookTwitterfeed /  feed comentarios

Mysql 5 y los valores por defecto

Ayer perdí una hora de mi vida con un problema de lo más tonto.

Subí un proyecto al servidor de producción y no funcionaba bien, cuando intentaba crear un nuevo registro en la Base de Datos MySQL (versión 5) desde la aplicación no lo hacia. Empecé a debuggear y encontré el error: Field ‘xxx’ doesn’t have a default value.

En vez de empezar buscando la solución en Google intenté resolverlo por mi cuenta, a lo espartano, hasta que desistí y recurrí al buscador. En 3 minutos encontré la solución en el BugTrack de MySQL.

Supongamos que tenemos una tabla con los campos id, nombre, apellido1, apellido2 y hacemos un INSERT INTO tabla(id, nombre) VALUES (1, ‘Luis’), fácil no? Pues mi servidor MySQL se queja porque apellido1 y apellido2 se quedan vacíos y no tienen un valor predeterminado.

La solución es bien sencilla:

1. Editar el fichero my.ini del servidor MySQL
2. Buscar la línea sql-mode=”STRICT_TRANS_TABLES, NO_AUTO_CREATE_USER, NO_ENGINE_SUBSTITUTION”
3. Reemplazarla por sql-mode=”"
4. Si en el fichero my.ini no existe esa línea poner directamente sql-mode=”"
5. Reiniciar el servidor MySQL

De esta manera el servidor ya acepta campos vacíos.

Moraleja: No te creas que eres un auténtico espartano y utiliza Google! Los espartanos tenían mucho tiempo libre…

2 Comentarios

  1. Rekin — 02/04/2009 #

    Y digo…

    Porqué al crear la tabla no le pusiste valores por defecto a los campos?

    No podían ser “NULL” ? Con cambiar el “NOT NULL” en los atributos del campo solucionado, no?

    Bueno… mejor me callo lo mío es no encontrar estas cosas o dejarme el típico “;” al final de línias :D

  2. admin — 06/04/2009 #

    Pues es lo primero que pensé yo… porque los campos del tipo idX pones valor por defecto 0 y andando, pero que hacemos para los campos tipo char, text, etc?

Publicar comentario