Saltar al contenido

Can’t create table ‘xxx’ (errno: 150). Un error de lo más tonto, pero para no olvidar.

mysql logo

Resulta que me encontraba realizando unas operaciones en la base de datos, me hacía falta una tabla nueva y mira tu por donde me topo con un error de principiante. (A estas alturas). Resulta que intentaba crear una tabla en MySQL con claves ajenas y me saltó este error Cant`t create table ‘?’ (errno:150) He perdido esta vez poco tiempo con un error de tales dimensiones, minúsculas, pero por si acaso, para no olvidarlo o al menos saber donde recurrir para solventarlo (qué vergüenza), pero bueno, seguro que todos nos hemos topado con cosas así alguna vez. Y más las horas que son.

Bueno pues al lío, este error nos lo puede tirar MySQL en los siguientes casos:

  • Si el campo de la tabla en cuestión utiliza un tipo de datos distinto al de tabla foránea (extranjera), es decir, si intentamos relacionar un campo de tipo VARCHAR con un INT por ejemplo.
  • Si la engine que utilizas para crear dicha tabla no permite relaciones (comprobar que incluímos INNODB como engine y que esta existe en ambas tablas).
  • Si añades a tu SQL On Delete Set Null y el campo no lo permite.
  • Y la que me ha pasado a mí… Si el nombre de la tabla o campo a enlazar se encuentra en minúsculas implementado y tu lo enlazas en mayúsculas, es decir, si haces un FOREIGN KEY (`id_ajena`) REFERENCES TABLAJENA(`campoAjeno`) y resulta que era tablaAjena(`campoAjeno`)

Penoso y vergonzoso, pero bueno, ahora ya está. (Incluso parece que he perdido más tiempo creando este post que solventando el problema, pero bueno, no pasa nada. ¿A quién no le ha pasado alguna vez?

Deja un comentario

A %d blogueros les gusta esto: