Privacidad: Recuerde que la información escrita en los foros de programación es 100% pública y que su ip será registrada asociada a su mensaje. Si encuentra un mensaje fuera de lugar, por favor, notifiquelo para su revisión y eliminación.
Problemas con Foreign Key (can't create table ...)
Enviado por Fernando Poblete Arrau el día 10 de agosto de 2004
Hola, mi problema es:
tengo una tabla (la voy a llamar TablaA) con una Primary Key de dos campos, cada uno de los cuales es una Foreign Key hacia una Primary Key de otras tablas (TablaB y TablaC).
En la tabla A cree indices para ambos campos y todas las tablas son tipo InnoDB.
Estoy haciendo lo siguiente:
ALTER TABLE TablaA
ADD CONSTRAINT C1 FOREIGN KEY(campo1) REFERENCES TablaB(campoX) ON DELETE CASCADE ON UPDATE CASCADE;
ALTER TABLE TablaA
ADD CONSTRAINT C2 FOREIGN KEY(campo2) REFERENCES TablaB(campoX) ON DELETE CASCADE ON UPDATE CASCADE;
Obtengo el siguiente mensaje de error:
ERROR 1005: Can't create table './test/#sql-84b_4.frm' (errno: 150)
Re: Problemas con Foreign Key (can't create table ...)
Enviado por Draka el día 13 de agosto de 2004
que version de MySql tienes, antes de la version 4.0.2 hay muchos problemas en crearlas, te recomiendo mejor que bajes la version 4.1, asi digan que es un beta.
Re: Re: Problemas con Foreign Key (can't create table ...)
Enviado por Fernando Poblete Arrau el día 13 de agosto de 2004
Gracias, puede ser, pero me gustaria una solucion menos radical ya que estoy trabajando en un servidor del cual no soy administrador, es decir, no tengo los permisos para instalar otra version....
Re: Problemas con Foreign Key (can't create table ...)
Enviado por Vargav el día 25 de agosto de 2004
Hola.
A mi me pasaba exactamente el mismo error que a ti te sucede.
He conseguido corregir el problema, veras todas las tablas que se encuentren relacionadas mediante las foreign deben ser del tipo InnoDB. Si alguna de las tablas en las que estas definiendo las relaciones no es de este tipo salta el error que comentas.
Asegurate de que todas las tablas son del tipo InnoDB y vuelve a probar.
Re: Problemas con Foreign Key (can't create table ...)
Enviado por Sergio el día 25 de agosto de 2004
Creo que lo que debe pasar es que la columna que es clave foránea debe estar definida con un tipo diferente a en la tabla donde es clave primaria. A mi me ha pasado con smallint y mediumint (ya me dirás hasta que me di cuenta del error).
Re: Problemas con Foreign Key (can't create table ...)
Enviado por ChaTo el día 28 de enero de 2005
Cosas a verificar:
1. Ambas tablas son INNODB
2. El tipo de datos coincide
3. La llave foreanea es llave primaria en la tabla destino
4. escribes FOREIGN y no FOREING (tipico)
otro problema con el Foreign Key (can't create table ...)
Enviado por Amable el día 2 de febrero de 2005
CREATE TABLE facultad (
cod_fac INTEGER(10) UNSIGNED NOT NULL,
cod_sed INTEGER(11) NOT NULL,
nombe CHAR(80) NOT NULL,
PRIMARY KEY(cod_fac),
FOREIGN KEY(cod_sed)
REFERENCES sede(cod_sed)
ON DELETE NO ACTION
ON UPDATE NO ACTION
)
TYPE=InnoDB;
CREATE TABLE carrera (
cod INTEGER(10) UNSIGNED NOT NULL,
cod_fac INTEGER(10) UNSIGNED NOT NULL,
nombre CHAR(80) NOT NULL,
PRIMARY KEY(cod),
FOREIGN KEY(cod_fac)
REFERENCES facultad(cod_fac)
ON DELETE NO ACTION
ON UPDATE NO ACTION
)
TYPE=InnoDB;
me asegure que la la llave FK en la tabla hijo tenga el mismo tipo que en la tabla padre y aún así sale tengo el mismo problema:
#1005 - Can't create table '.\admision\facultad.frm' (errno: 150)
Re: otro problema con el Foreign Key (can't create table ...)
Enviado por eva el día 10 de febrero de 2005
Todas las columnas que forman parte de la clave ajena deben estar indizadas, bien por ser la primera columna de una clave primaria o bien por ser definida como INDEX. En tu caso, tienes que añadir la siguiente línea en la creación de la tabla carrera tras definir la clave primaria:
Re: Problemas con Foreign Key (can't create table ...)
Enviado por King Arthur el día 5 de febrero de 2005
Primero se deben definir como llaves primarias todos los campos que van a incluir, luego hay que agregar con el signo + una foreign key que aparece como fk_nombre_tabla_1, luego hay que referenciar la tabla de donde se encuentra la llave
Re: Re: Problemas con Foreign Key (can't create table ...)
Enviado por todovale el día 23 de marzo de 2005
jajaja puta mare es un error estupido menos mal lo solucione en 15 minutos, ese error sale cuando craer llaves foranea de tablas en donde no declaraste la llave primary, espero les ayude en esto.. atentamente http://todovale.no-ip.com
como creo una llave foranea (Foreign Key) en mysql
Enviado por breiner lopez el día 17 de junio de 2005
Reciban cordial saludo.
Depronto llego un poco tarde al foro pero en todas partes hablan de como resolver problemas pero yo el problema que tengo es que no se crear una llave foranea yo veo que en distintos foros usan diferentes terminos para su creacion pero en ninguno explican porque las sentencias ni sus valores alguien me podia ayudar mi correo es blopezbustamante@yahoo.com
Re: Problemas con Foreign Key (can\\\\\\\\\\\\\\\'t create table ...)
Enviado por Maxxi el día 15 de febrero de 2006
Gracias tenia el mismo problema, y era que la columna origen y destino eran del tipo diferente una era bigint y la otra int con distia longitud.
Gracias a los que aportaron la solucion.
Re: Problemas con Foreign Key (can't create table ...)
Enviado por Christian el día 2 de abril de 2006
Aveces sucede ese error cuando los nombres delas referencias son igules por ejemplo:
CONSTRAINT `(1\n)Tiene` FOREIGN KEY (`codex`)
REFERENCES `excursion`(`codex`)
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `(1\n)Contiene` FOREIGN KEY (`codhot`)
REFERENCES `hotel`(`codhot`)
ON DELETE NO ACTION
ON UPDATE NO ACTION
Los CONSTRAINT `(1\n)Contiene` CONSTRAINT `(1\n)Tiene` no deben ser igules si es una tabla de referencias cruzadas recomendable cambiar todas las referencias (nombres ) ala base de datos. Espero que les sirva
Re: Re: Problemas con Foreign Key (can't create table ...)
Enviado por rippman el día 17 de abril de 2006
tengan en cuenta lo que les han comentado antes, que es todo de mucha ayuda.
Yo por mi parte aporto el consejo de que tengan mucho cuidado con que los tipos de datos sean los mismos; aunque pueda parecer una tontería.
Hoy mismo he tenido problemas por intentar asociar un indice tipo 'int' a uno tipo 'unsigned int'. y me he tardado un rato hasta que me he dado cuenta.
Enviado por kingofsnake el día 21 de abril de 2006
Yo tenia el mismo problema, lo acabo de solucionar, ya que en laclave foranea e tenido que poner los campos juntos que iban a una misma tabla, ya que si lo haces por separado no va.
(mysql es mu pu�etero jeje)