Ver Mensaje Individual
  #1 (permalink)  
Antiguo 17/12/2008, 05:01
sk1one
 
Fecha de Ingreso: diciembre-2007
Mensajes: 149
Antigüedad: 16 años, 5 meses
Puntos: 1
Exclamación FOREIGN KEYs caso raro

Bien este caso ya me pasó una vez y era porque los campos a los que asociaba las foreigns keys no eran campos indices o claves ( key o primary key) por lo que no me dejaba, pero este es un caso raro, me sale el mismo error en una tabla pero en otra no y siguen las mismas normas con las FK. Me explico:

En la tabla CATEGORIA, tengo: id_categoria int(11) auto_increment
En otra tabla ACTIVIDAD, tengo: FOREIGN KEY (id_categoria) REFERENCES categoria (id_categoria)

¿Porque me da error mysql en la tabla MOVIMIENTO, si tengo declarados los campos como primary keys ?, ¿ y si solo pueden hacer las FK a campos KEY porque en la tabla ACTIVIDAD me admite esa FK y en movimiento no?

Espero haberme explicado bien, gracias por su tiempo.

DROP TABLE IF EXISTS usuario;
CREATE TABLE usuario(
id_usuario int(11) auto_increment,
dni varchar(9) not null,
nombre varchar(100) not null,
profesion varchar(100) not null,
anio_nac int(11) not null,
sexo varchar(6) not null,
direccion varchar(150) not null,
cp int(11) not null,
poblacion varchar(50) not null,
barrio varchar(50) not null,
telf_1 int(11) not null,
telf_2 int(11),
email varchar(50) not null,
nick varchar(15) not null,
pass varchar(15) not null,
horas_disponibles int(11) default 0,
PRIMARY KEY(id_usuario)
)ENGINE=InnoDB;

DROP TABLE IF EXISTS admin;
CREATE TABLE admin(
id_admin int(11) auto_increment,
email varchar(50),
nick varchar(15),
pass varchar(15),
PRIMARY KEY(id_admin)
)ENGINE=InnoDB;

DROP TABLE IF EXISTS categoria;
CREATE TABLE categoria(
id_categoria int(11) auto_increment,
titulo varchar(150) not null,
descripcion text,
estado tinyint(1) default 0,
PRIMARY KEY(id_categoria)
)ENGINE=InnoDB;

DROP TABLE IF EXISTS actividad;
CREATE TABLE actividad(
id_actividad int(11) auto_increment,
id_categoria int(11),
titulo varchar(150),
descripcion text,
PRIMARY KEY(id_actividad),
FOREIGN KEY (id_categoria) REFERENCES categoria (id_categoria)
)ENGINE=InnoDB;

DROP TABLE IF EXISTS movimiento;
CREATE TABLE movimiento(
id_movimiento int(11) auto_increment,
id_usuario int(11),
id_actividad int(11),
oferta tinyint(1),
demanda tinyint(1),
fecha date,
horas_empleadas int(11) default 0,
estado tinyint(1),
PRIMARY KEY(id_movimiento),
FOREIGN KEY (id_usuario) REFERENCES usuario (id_usuario),
FOREIGN KEY (id_actividad) REFERENCES usuario (id_actividad)
)ENGINE=InnoDB;

MySQL ha dicho:

#1005 - Can't create table './bancodet_db/movimiento.frm' (errno: 150)