Ver Mensaje Individual
  #1  
Antiguo 12-03-2008
Avatar de D-MO
D-MO D-MO is offline
Miembro
 
Registrado: ago 2005
Ubicación: root@debian:/#
Posts: 1.042
Reputación: 20
D-MO Va por buen camino
Error 1005, problemas creando una tabla.

Que tal, después de algun tiempo ausente en el foro me veo en la necesidad de pedirles un poco de ayuda a resolver este problema.

Me he diseñado la Base de Datos utilizando MySQL Workbench (muy bueno por cierto, lo recomiendo) ya la tenía funcionando pero decidí "optimizarla" de manera tal que podría ahorrarme algunos campos y hacer mas "pequeñas" las consultas, pero, ahora que ya la tengo lista de nuevo cuando intento crear las tablas me da algunos errores (la mayoría los he solucionado) pero con este si me quedé trabado:

Código:
  #1005 - Can't create table './xxx/vehiculo.frm' (errno: 150)

La tabla en cuestión es la siguiente:

Código SQL [-]
-- -----------------------------------------------------
-- Table `xxx`.`vehiculo`
-- -----------------------------------------------------
CREATE  TABLE IF NOT EXISTS `xxx`.`vehiculo` (
  `CodVehiculo` INT NOT NULL,
  `CodLineaVehiculo` INT NOT NULL ,
  `CodDano` VARCHAR(2) NOT NULL ,
  `CodTitulo` VARCHAR(2) NOT NULL ,
  `LocalidadSubasta` VARCHAR(3) NOT NULL ,
  `FechaSubasta` VARCHAR(8) NOT NULL ,
  `Odometro` INT NULL ,
  `PrecioVenta` FLOAT(7,2) NULL ,
  `Modelo` INT NOT NULL ,
  `Activo` BOOLEAN NOT NULL DEFAULT false ,
  INDEX fk_vehiculo_linea_vehiculo (`CodLineaVehiculo` ASC) ,
  PRIMARY KEY (`CodVehiculo`) ,
  INDEX fk_vehiculo_dano (`CodDano` ASC) ,
  INDEX fk_vehiculo_titulo (`CodTitulo` ASC) ,
  INDEX fk_vehiculo_subasta (`FechaSubasta` ASC, `LocalidadSubasta` ASC) ,
  CONSTRAINT `fk_vehiculo_linea_vehiculo`
    FOREIGN KEY (`CodLineaVehiculo` )
    REFERENCES `xxx`.`linea_vehiculo` (`CodLineaVehiculo` )
    ON DELETE NO ACTION
    ON UPDATE NO ACTION,
  CONSTRAINT `fk_vehiculo_dano`
    FOREIGN KEY (`CodDano` )
    REFERENCES `xxx`.`dano` (`CodDano` )
    ON DELETE NO ACTION
    ON UPDATE NO ACTION,
  CONSTRAINT `fk_vehiculo_titulo`
    FOREIGN KEY (`CodTitulo` )
    REFERENCES `xxx`.`titulo` (`CodTitulo` )
    ON DELETE NO ACTION
    ON UPDATE NO ACTION,
  CONSTRAINT `fk_vehiculo_subasta`
    FOREIGN KEY (`FechaSubasta` , `LocalidadSubasta` )
    REFERENCES `xxxn`.`subasta` (`Fecha` , `CodLocalidad` )
    ON DELETE NO ACTION
    ON UPDATE NO ACTION)
ENGINE = InnoDB;

Los cambios que se hicieron en esta tabla fueron cambiar el tipo de dato de los campos 'CodDano' y 'CodTitulo' de INT a VARCHAR(2). El cambio tambien se realizó en las tablas respectivas ('dano' y 'titulo'), siendo la estructura de estas la siguiente:

Código SQL [-]
-- -----------------------------------------------------
-- Table `xxx`.`dano`
-- -----------------------------------------------------
CREATE  TABLE IF NOT EXISTS `xxx`.`dano` (
  `CodDano` VARCHAR(2) NOT NULL,
  `Dano` VARCHAR(20) NOT NULL ,
  `DescripcionDano` VARCHAR(255) NOT NULL ,
  PRIMARY KEY (`CodDano`) )
ENGINE = InnoDB;


-- -----------------------------------------------------
-- Table `xxx`.`titulo`
-- -----------------------------------------------------
CREATE  TABLE IF NOT EXISTS `xxx`.`titulo` (
  `CodTitulo` VARCHAR(2) NOT NULL,
  `NombreTitulo` VARCHAR(45) NULL ,
  `DescripcionTitulo` VARCHAR(255) NULL ,
  PRIMARY KEY (`CodTitulo`) )
ENGINE = InnoDB;


Ya di vueltas por todos lados y no he podido solucionar.

La ayuda de MySQL dice lo siguiente:
Cita:
Empezado por Ayuda de MySQL
1005 (ER_CANT_CREATE_TABLE)
No se puede crear la tabla. Si el mensaje del error hace referencia al errno 150, la creación de la tabla falló debido a una restricción de clave foránea incorrectamente formulada.
[enlace]

Pero, ¿cual de las llaves foráneas está mal?

¿Alguien sabe que tengo mal?

Saludos
Responder Con Cita