Ver Mensaje Individual
  #1 (permalink)  
Antiguo 21/03/2011, 14:42
verigc1
 
Fecha de Ingreso: febrero-2011
Mensajes: 5
Antigüedad: 13 años, 10 meses
Puntos: 0
Imposible crear las claves foraneas de tablas

Buenas, de nuevo los molesto con una pregunta tonta tal vez pero realmente no he podido hacerlo y creanme que he leido muchos temas y foros y no consigo crear las clavez foraneas para relacionar dos tablas.

Tengo las siguientes tablas:

CREATE TABLE IF NOT EXISTS `pepsistema2`.`avance` (
`FechaAvance` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00' ,
`CodObra` VARCHAR(30) CHARACTER SET 'utf8',
`Descripavance` TEXT CHARACTER SET 'utf8' COLLATE 'utf8_spanish2_ci' NOT NULL ,
`ObservAvance` TEXT CHARACTER SET 'utf8' COLLATE 'utf8_spanish2_ci' NOT NULL ,
`NroOrden` VARCHAR(15) CHARACTER SET 'utf8' COLLATE 'utf8_spanish2_ci' NOT NULL ,
`eliminado` BIT(1) NULL DEFAULT 0 ,
PRIMARY KEY (`FechaAvance`, `CodObra`) ,
INDEX `fk_avance_ordenservicio1` (`NroOrden` ASC) ,
INDEX `fk_avance_obra1` (`CodObra` ASC) ,
ENGINE = InnoDB
DEFAULT CHARACTER SET = utf8
COLLATE = utf8_spanish2_ci;

CREATE TABLE IF NOT EXISTS `pepsistema2`.`mdemateriales` (
`CodMaterial` VARCHAR(10) CHARACTER SET 'utf8' COLLATE 'utf8_spanish2_ci' NOT NULL ,
`Descripcion` LONGTEXT CHARACTER SET 'utf8' COLLATE 'utf8_spanish2_ci' NOT NULL ,
`Unidad` TEXT CHARACTER SET 'utf8' COLLATE 'utf8_spanish2_ci' NOT NULL ,
`Precio` DOUBLE NOT NULL ,
`IdTipoDesglose` INT(11) NOT NULL ,
PRIMARY KEY (`CodMaterial`) ,
INDEX `fk_mdemateriales_mdetipodesglose1` (`IdTipoDesglose` ASC) ,
ENGINE = MyISAM
DEFAULT CHARACTER SET = utf8
COLLATE = utf8_spanish2_ci;

CREATE TABLE IF NOT EXISTS `pepsistema2`.`avance_material` (
`FechaAvance` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00',
`CodObra` VARCHAR(30) CHARACTER SET 'utf8' COLLATE 'utf8_spanish2_ci' NOT NULL ,
`CodMaterial` VARCHAR(10) CHARACTER SET 'utf8' COLLATE 'utf8_spanish2_ci' NOT NULL ,
`NroOrden` VARCHAR(50) CHARACTER SET 'utf8' COLLATE 'utf8_spanish2_ci' NOT NULL ,
`IdTipoDesglose` DOUBLE NOT NULL DEFAULT 17 ,
`Cantidad` DOUBLE NOT NULL DEFAULT 0 ,
`Precio` DOUBLE NOT NULL DEFAULT 0 ,
`eliminado` BIT(1) NOT NULL ,
PRIMARY KEY (`FechaAvance`, `CodObra`, `CodMaterial`) ,
INDEX `NroOrden` (`NroOrden` ASC, `IdTipoDesglose` ASC, `Cantidad` ASC, `Precio` ASC) ,
INDEX `Precio` (`Precio` ASC) ,
INDEX `Cantidad` (`Cantidad` ASC) ,
INDEX `fk_avance_material_avance1` (`FechaAvance` ASC, `CodObra` ASC) ,
INDEX `fk_avance_material_mdemateriales1` (`CodMaterial` ASC) ,
INDEX `fk_avance_material_mdetipodesglose1` (`IdTipoDesglose` ASC) ,
CONSTRAINT `fk_avance_material_avance1`
FOREIGN KEY (`FechaAvance` , `CodObra` )
REFERENCES `pepsistema2`.`avance` (`FechaAvance` , `CodObra` )
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `fk_avance_material_mdemateriales1`
FOREIGN KEY (`CodMaterial` )
REFERENCES `pepsistema2`.`mdemateriales` (`CodMaterial` )
ON DELETE NO ACTION
ON UPDATE NO ACTION,
ENGINE = InnoDB
DEFAULT CHARACTER SET = utf8
COLLATE = utf8_spanish2_ci
COMMENT = 'Materiales usados por las contratistas para las obras' ;


La primeras dos tablas las puedo crear sin problema, pero al crear la tabla avance_material, la cual tiene las claves foraneas, me da el Error Code: 1005, he intentado de mil maneras y no ha sido posible crear esa relacion con las tablas, no se realmente que este haciendo mal.

Y esto es solo una parte, toda la base de datos (59 tablas) me esta dando el mismo error en las tablas que tiene claves foraneas.

Agradezco su ayuda