Sign up with your email address to be the first to know about new products, VIP offers, blog features & more.

Error en MySQL: Can’t create table ‘xxx’ (errno: 150)

Soy de los que piensa que MySQL (o MariaDB si queréis algo no dependiente de Oracle) es una gran base de datos incluso para desarrollos serios y lo pongo en negrita porque todavía hoy me encuentro con muchos que defienden alternativas como Oracle DB o PostgreSQL para aplicaciones más complejas y MySQL para aplicaciones más sencillas.

Una de las características que debe tener todo modelo relacional medianamente serio, es el uso de claves foráneas que deben ir especificadas en la construcción de las diferentes tablas de forma que conozcan que campos hacen referencia a qué otros campos. Esto con InnoDB es perfectamente posible en MySQL.

Foreign key

Aquí tenéis la documentación y un ejemplo de cómo crear restricciones de clave foránea de MySQL:

El ejemplo es sencillo pero a la vez muy común, es muy frecuente tener una tabla hija que haga referencia al id de su tabla padre: por ejemplo el típico ejemplo de factura y línea factura.

Error: Can’t create table ‘xxx’ (errno: 150)

Haciendo algo similar a esto, esta mañana he sufrido un error (el del título) que nunca antes me había pasado. He empezado a comprobar y tras dar muchas vueltas he dado con el fallo: los dos tipos de datos deben ser idénticos.

Y cuando idénticos digo: mismo tipo de datos, misma longitud, signed o unsigned los dos, si es not null igual el otro.

Esto es lo lógico pero a mí se me había escapado un detalle, uno era signed y el otro unsigned y he perdido unos minutos hasta dar con el error (tras la primera y típica reacción “será problema de MySQL”).

Leer entrada anterior
visual de la app
Reproduce o descarga videos de Youtube por linea de comandos

El otro dia estaba tratando de instalar un cliente de terminal para Spotify, el reproductor de musica online. Se trataba...

Cerrar