Lunes, Mayo 12th, 2008...16:45

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

Saltar a Comentarios

MySQl Logo

Solo hay dos posibles casos en los que nos podría fallar, con este error, nuestra creación de claves foráneas en una base de datos MySQL.

  • Si los dos campos (Nombre de campo y el nombre de campo foráneo) usan tipos de campo incompatibles.
  • Si tu usas “On Delete Set Null” pero el campo no lo permite, MySQL te devolverá el error.

Me decidi a crear este post, porque tuve el problemilla, hay mucha gente por muchos foros buscando resolverlo y no está detallada la información :D . Es una tontería que me hizo perder tiempo, espero que no se lo haga perder a otros.


Entradas Relacionadas

26 Comentarios

  • Rommel Anatoli Quintanilla Cruz
    Mozilla Firefox Mozilla Firefox 2.0.0.14 en Windows Windows XP
    Junio 22nd, 2008 at 17:08

    Es cierto, era eso, me salió el error y era por campos foránetos con tipos de datos incompatibles, gracias!

  • David
    Mozilla Firefox Mozilla Firefox 3.0.1 en Windows Windows Server 2003
    Julio 22nd, 2008 at 17:07

    Bueno… mis columnas comparten el tipo de dato que es de tipo INT con longitud (4) NOT NULL DEFAULT 0…

    No se que hacer. El statement que uso para añadir la llave foranea es:

    ALTER TABLE cti ADD FOREIGN KEY (entidad_id) REFERENCES entidades (entidad_id) ON DELETE RESTRICT ON UPDATE CASCADE;

    El error es:
    #1005 – Can’t create table ‘.\digitalizacion\#sql-7a0_da.frm’ (errno: 150)

    Por si hay alguna duda va la estructura de la tabla:
    Tabla cti
    | Field | Type | Null | Key | Default | Extra |
    | entidad_id | int(4) | NO | | 0 | |

    Tabla entidades
    | Field | Type | Null | Key | Default | Extra |
    | entidad_id | int(4) | NO | | 0 | |

  • David
    Mozilla Firefox Mozilla Firefox 3.0.1 en Windows Windows Server 2003
    Julio 22nd, 2008 at 17:17

    emmm bien ya resolvi mi problema y fue que dada la celeridad con la que lo intente (debido a que en las pruebas todo salio bien) olvide por completo que la tabla de entidades no tenia una PK asignada en el campo que se referencia como FK en la tabla cti…

    no me queda d eotra mas que decir: http://content.ytmnd.com/content/0/c/3/0c36b933b5ab957fbea475b5d612b1fe.jpg

    jajajaja gracias.

  • Dani
    Mozilla Firefox Mozilla Firefox 3.0.1 en Windows Windows XP
    Julio 23rd, 2008 at 9:04

    jaja y aqui comiendome el tarro leyendo esto jaja

  • Rull
    Internet Explorer Internet Explorer 7.0 en Windows Windows Vista
    Agosto 11th, 2008 at 10:33

    Mmmm y que puede ser si la tabla que trato de crear es la primera en ser creada, no tiene ninguna llave foranea y me manda ese código de error??

  • fdhs
    Mozilla Firefox Mozilla Firefox 3.0.1 en Windows Windows XP
    Septiembre 21st, 2008 at 1:33

    Yo tuve este problema, en una base de datos en utf8 y utf8_unicode_ci.

    Hice un “dump” de una base de datos que tenía una tabla con otro cotejamiento.

    La tabla decía:

    ENGINE=InnoDB DEFAULT CHARSET=latin1;

    Cambié a:

    ENGINE=InnoDB DEFAULT CHARSET=utf8;

    Y ya no salió el error

    Saludos

  • Fnovoa
    Mozilla Firefox Mozilla Firefox 3.0.5 en Windows Windows XP
    Diciembre 26th, 2008 at 5:03

    Hola, quero compartir un error que me sucedio y que tambien puede generarse por la imcompatibilidad de las claves foraneas en cuanto a su tipo, es decir; tengo una clave foranea que referencia a un tipo de dato numerico, pero mi clave está definida como varchar.
    Ademas de esto debe definirse las fk como index para tablas innodb y ojalá crear las constraint una vez que se haya vaciado completamente la base de datos.
    slds!!

  • no me sale!
    Mozilla Firefox Mozilla Firefox 3.0.5 en Ubuntu Linux Ubuntu Linux
    Febrero 18th, 2009 at 22:02

    Hola, alguna otra razon de este error???

  • ANGELO047
    Internet Explorer Internet Explorer 7.0 en Windows Windows XP
    Febrero 24th, 2009 at 23:12

    Otra razón por la que arroja ese error es por el tipo de tabla.. recuerden que si una es tipo MyIsam y la Otra InnoDB.. pues arrojará error 150.. pilas con eso también…

  • RetroFOX
    Mozilla Firefox Mozilla Firefox 3.0.6 en Ubuntu Linux Ubuntu Linux
    Marzo 7th, 2009 at 16:34

    Bendito ese día que te decidiste a postear este error.
    Abrazo.

  • Niko@localhost
    Mozilla Firefox Mozilla Firefox 3.0.8 en Windows Windows Vista
    Abril 21st, 2009 at 6:10

    Muchas gracias… en verdad me sirvio tu informacion, justo mi problema era el tipo de datos incompatibles, cree la estructura de mi base de datos con la herramienta MySQL Workbench (muy recomendable), pero en alguna parte hice la modificacion de los tipos de datos y no lo actualice en todas mis tablas y cuando me genero el script no me di cuenta del problema, pero ya se resolvio… Gracias de nuevo!!!

  • 1000 Gracias.
    Me ha ayudado mucho!

    Era por el segundo de los casos.

    PD: El mensaje de error no ayuda mucho :-(

  • JUSTO
    Safari Safari 530.5 en Mac OS Mac OS X
    Junio 10th, 2009 at 19:41

    Hola… ya revisé todo: motor de las tablas, tipo de datos, cotejamiento, índices, nulls, etc… todo al parecer está bien… pero me sigue saliendo ese error… existe otra razón por la cual salga este error?

  • Röeltz
    Safari Safari 530.5 en Mac OS Mac OS X
    Junio 29th, 2009 at 14:30

    Yo acabo de tener ese error. Resulta que tenía una tabla de idiomas, y el PK era CHAR(3). Una tabla de libros tenía una FK al idioma, pero mientras que la tabla de libros tenía collation en utf8, la de idiomas no. Cuando ambas tuvieron su collation en utf8 el error desapareció.

    En resumen, revisen collation de campos CHAR.

  • Elias
    Mozilla Firefox Mozilla Firefox 3.0.13 en Ubuntu Linux Ubuntu Linux
    Agosto 12th, 2009 at 18:08

    Gracias por este post, me ayudo a resolver mi problema

  • Xavi Montero
    Mozilla Firefox Mozilla Firefox 3.0.13 en Windows Windows XP
    Agosto 13th, 2009 at 21:07

    Por si le sirve a alguien:

    Yo me he estado volviendo loco con el mismo problema, el TIPO DE DATO era idéntico. en ambos casos era un VARCHAR(36) que utilizo para almacenar como claves primarias un UUID estándar en formato “string”.

    Sin embargo al ser texto, tienen asociado un “código de caracteres” y una tabla se creó con el charset con “UTF” y otra con el “LATIN”.

    No enlazaban por eso.

    Cambiando el charset para ser todo coherente (ambos a utf8 o ambos a latin) ya me dejó crear la FOREIGN KEY sin el error del “can’t create table…”

  • cosa305
    Mozilla Firefox Mozilla Firefox 3.0.13 en Ubuntu Linux Ubuntu Linux
    Agosto 25th, 2009 at 23:11

    En mi caso fue por las tablas, una InnoDB y la otra MyIsam.

    Muchas gracias a todos

  • Porque extraña razón el MySQL Workbench me puso un campo que debia ser INT como DATETIME es algo que no comprendo… ¡gracias!

  • Laura
    Internet Explorer Internet Explorer 8.0 en Windows Windows Vista
    Noviembre 18th, 2009 at 7:31

    Este error puede ser también por que la llave foránea de la tabla está haciendo referencia a un campo de la otra tabla que no es llave primaria, como sabemos las llaves foráneas deben hacer referencia a las llaves primarias de las tablas con las que las estamos relacionando.

  • Anónimo
    Mozilla Firefox Mozilla Firefox 3.5.1 en Windows Windows XP
    Marzo 25th, 2010 at 12:51

    MySQL permite usar

    CREATE TABLE tabla2 ( j INT REFERENCES tabla1 (i) );
    Con tabla1.i primary key, auto increment, not null, etc.

    Pero si se usa la sintaxis
    CREATE TABLE tabla2 (
    j INT, FOREIGN KEY (j) REFERENCES tabla1(i) );

    Dará este error porque entonces espera que j sea también NOT NULL.

  • Mar
    Mozilla Firefox Mozilla Firefox 3.6.3 en Windows Windows Vista
    Abril 30th, 2010 at 20:53

    Gracias
    Me estaba volviendo ya loca.
    Mi problema era por el tipo de dato, o más bien pq en unos sitios los tenia como not null y en otros no.
    Lo dicho… gracias :)

  • daniel
    Mozilla Firefox Mozilla Firefox 3.6 en Windows Windows NT
    Mayo 13th, 2010 at 6:54

    la verdad muchas gracias hermano… muy buen dato!!!

  • daniel
    Mozilla Firefox Mozilla Firefox 3.6 en Windows Windows NT
    Mayo 13th, 2010 at 6:55

    muchas gracias por el aporte hermano la verdad que me saco la pata del barro….!!!

  • aua
    Mozilla Firefox Mozilla Firefox 3.6.3 en Windows Windows XP
    Mayo 24th, 2010 at 8:28

    gracias a fdhs tu caso era el mismo mio.. gracias!

  • Reedyseth
    Mozilla Firefox Mozilla Firefox 3.6.3 en Windows Windows NT
    Mayo 31st, 2010 at 18:22

    [Otra razón por la que arroja ese error es por el tipo de tabla.. recuerden que si una es tipo MyIsam y la Otra InnoDB.. pues arrojará error 150.. pilas con eso también…]

    Esto resolvio mi problema, muchas gracias.

  • alex
    Mozilla Firefox Mozilla Firefox 3.6.8 en Windows Windows NT
    Julio 27th, 2010 at 17:21

    Otro que ha caído como David en la misma! No había creado la primary key en la tabla a enlazar por lo que evidentemente no se podía crear la clave foránea!

    Sólo para dar las gracias a la gente que postea que siempre viene bien ayudarse unos a otros. Un saludo gente!

Dejar una respuesta

La moderación de comentarios está activada. Su comentario podría tardar cierto tiempo en aparecer.