Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General »

MySQL - Foreign key

Estas en el tema de MySQL - Foreign key en el foro de Bases de Datos General en Foros del Web. Hola, estoy trabajando con mysql y al intentar crear una tabla con foreign key me da el error: Can't create table '.\piezas\referencia.frm' (errno: 150) El ...
  #1 (permalink)  
Antiguo 01/03/2004, 04:30
Usuario no validado
 
Fecha de Ingreso: marzo-2004
Ubicación: Barna
Mensajes: 18
Antigüedad: 20 años, 2 meses
Puntos: 0
Pregunta MySQL - Foreign key

Hola, estoy trabajando con mysql y al intentar crear una tabla con foreign key me da el error:

Can't create table '.\piezas\referencia.frm' (errno: 150)

El codigo para crear la tabla es el siguiente:

CREATE TABLE Referencia(
codigo VARCHAR(20),
denominacion VARCHAR(128),
unidades INT NOT NULL DEFAULT 1,
padre VARCHAR(20) NOT NULL,
PRIMARY KEY(codigo),
FOREIGN KEY(padre) REFERENCES Referencia(codigo)) type=Innodb;

He probado a crearla con un indice pero sigue dando el mismo error.

A ver si sabeis que es lo que ocurre.

Gracias.
  #2 (permalink)  
Antiguo 01/03/2004, 07:07
 
Fecha de Ingreso: enero-2002
Mensajes: 1.872
Antigüedad: 22 años, 3 meses
Puntos: 3
hola chimo, no se si estare en lo cierto, pero creo que en mysql no se pueden crear foreign keys.

salu2
  #3 (permalink)  
Antiguo 01/03/2004, 07:09
 
Fecha de Ingreso: enero-2002
Mensajes: 1.872
Antigüedad: 22 años, 3 meses
Puntos: 3
se me olvidaba decirte, segun la version del mysql que utilices. hay algunas en las que no funciona
  #4 (permalink)  
Antiguo 01/03/2004, 07:54
Avatar de puchitol  
Fecha de Ingreso: diciembre-2003
Ubicación: ELCHE
Mensajes: 322
Antigüedad: 20 años, 4 meses
Puntos: 0
Hola,
que version tienes de mysql?, en las recientes 4.x , el uso de foreing keys ya viene por defecto, pero en antiguas 3.23.x (no recuerdo a partir de cual exactamente) debes ejecutar el servidor especifico para las foreign keys.

Para crear una foreign key, debes crear primero un indice sobre el campo que va a ser la foreign key, asi que tiene que funcionarte forzosamente, quizas estas haciendo algo mal por otro lado, investiga bien.

yo tango mysql 4.0.17 y el uso de foreign keys me va perfecto, tal y como te he contado.

un saludo.
__________________
If you think fuck is funny, fuck yourself and save your money,
espero que entendais la moraleja... je, je, je
  #5 (permalink)  
Antiguo 01/03/2004, 08:24
Usuario no validado
 
Fecha de Ingreso: marzo-2004
Ubicación: Barna
Mensajes: 18
Antigüedad: 20 años, 2 meses
Puntos: 0
Hola,

estoy usando la version 5 (ya se q todavia no es definitiva). Lo raro es que algunas foreign key's si que me funcionan pero otras muchas no.

Seguire investigando....
  #6 (permalink)  
Antiguo 02/03/2004, 02:25
Avatar de puchitol  
Fecha de Ingreso: diciembre-2003
Ubicación: ELCHE
Mensajes: 322
Antigüedad: 20 años, 4 meses
Puntos: 0
Hola otra vez,
pues te recomiendo que uses una version que sea estable,ok?
por ejemplo la 4.0.17.
un saludo.
__________________
If you think fuck is funny, fuck yourself and save your money,
espero que entendais la moraleja... je, je, je
  #7 (permalink)  
Antiguo 02/03/2004, 15:04
 
Fecha de Ingreso: marzo-2004
Mensajes: 2
Antigüedad: 20 años, 2 meses
Puntos: 0
Hola, que tal??? Yo estoy usando la 4.1 alpha, pero en la 4.0 tambien me funcionaban (creo que estan disponibles a partir de la 3.27),pero obviamente, utilizando las tablas InnoDB. El primer error que te encuentro es que la clave ajena referencia a la misma tabla, deberia ser:
Foreign Key (nombre_de_la_clave) referencesnombre_de_la_tabla(nombre_de_la_clave_de _la_otra_tabla). Segun lo que yo creo las claves ajenas apuntan suempre a otra tabla. El segundo error es que tenes que crear un indice para el atributo padre, si no no te va a funcionar. Aca te paso un ejemplo que a mi me anda sin ningun problema:

create table provincias (
id int(2) not null auto_increment,
nombre char(20) not null,
unique i1 (nombre), #este indice es solo para que no te permita 2 provincias iguales, no es necesario
primary key (id)
)Type=InnoDB;

Create Table Clientes (
dni int(8) not null ,
nombre char (20) not null,
apellido char(20),
provincia int(2),
primary key (dni),
index i1 (provincia), #este indice si es necesario, porque si no te da un error al crear la tabla
foreign key (provincia) references provincias(id) on delete restrict on update restrict
)Type=InnoDB;

Espero que te sirva.

Saludos,

Santiago.
Paraná-Entre Ríos-Argentina.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 10:26.