Zona HTML Zona Java Zona PHP Zona ASP Zona Bases de datos
Inicio > Foros > MySQL > Problemas con Foreign Key (can't create table ...)
-Foros de debate

MySQL
Lista de foros | Lista de mensajes de este foro

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)

¿alguien me puede ayudar?
Muchas gracias.

 
Re: Problemas con Foreign Key (can't create table ...)
Enviado por Santi GL el día 10 de agosto de 2004

comprueba que todos los campos que intervienen en la foreign key son índices tanto en la tabla origen como en la destino

 
Re: Re: Problemas con Foreign Key (can't create table ...)
Enviado por Fernando Poblete Arrau el día 13 de agosto de 2004

Todos los campos inc`volucrados (en ambas tablas) son indices...aun asi no funciona.
Gracias de todas formas

 


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.

No jode tanto.

 
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 Draka el día 13 de agosto de 2004

Otra cosa que se me habia pasado es que seguramente los campos a los que le va a ingresar la llave foranea no son INDICES.

Tienen que ser indices o si no sale ese error.
con este comando
SHOW INNODB STATUS;
Le muestra el ultimo error

 
Re: Re: Problemas con Foreign Key (can\'t create table ...)
Enviado por Fernando Poblete Arrau el día 13 de agosto de 2004

Todos los campos involucrados (en ambas tablas) son indices...aun asi no funciona.
Gracias de todas formas

 
Re: Re: Re: Problemas con Foreign Key (can\'t create table ...)
Enviado por Draka el día 13 de agosto de 2004

Es que como dije antes, en versiones de MySQL antes de la 4.0.2 joden mucho crear esas llaves foraneas.

No se porque, uno cree que esta todo bien pero no.

Intenta usando un administrador de windows, crealas en local, y luego importalas.

 
Re: Re: Re: Re: Problemas con Foreign Key (can\'t create table ...)
Enviado por Fernando Poblete Arrau el día 16 de agosto de 2004

Esa solucion me parece buena. Me podrias dar alguna pista de como hacerlo?
Muchas gracias de nuevo !.

 
Re: Re: Re: Re: Re: Problemas con Foreign Key (can\'t create table ...)
Enviado por Lennarth el día 4 de enero de 2006

Como mencionan por ahí, la definición del tipo de campo es trascendente.

Por ejemplo, si ambos campos están indexados, son del mismo tipo, son del engine InnoDB, pero uno es UNSIGNED y el otro no, también manda ese error.

 





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.

A mi se me solucionó el problema.

 
Re: Re: Problemas con Foreign Key (can't create table ...)
Enviado por Fernando Poblete Arrau el día 25 de agosto de 2004

Gracias, pero todas las tablas son InnoDB

 


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).


Un saludo

 
Re: Re: Problemas con Foreign Key (can\'t create table ...)
Enviado por Javier el día 12 de enero de 2005

Gracias por la solución, estaba volviendome loco y al final era una tontada del calibre 30. Un saludo desde pamplona

 


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)

Saludos.

 
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:

INDEX (cod_fac),

 



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.

Rippman.

 
Re: Re: Re: Problemas con Foreign Key (can\'t create table ...)
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)

 
Re: Re: Re: Re: Problemas con Foreign Key (can\\\\\\\'t create table ...)
Enviado por Capo el día 12 de junio de 2006

ñ

 





Tienda
Patrocinados
 

Copyright © 1999-2006 Programación en castellano. Todos los derechos reservados.
Formulario de Contacto - Datos legales - Publicidad

Hospedaje web y servidores dedicados linux por Ferca Network