MySQL - Error al exportar a MySql

 
Vista:

Error al exportar a MySql

Publicado por deliriodelunallena (2 intervenciones) el 27/10/2009 05:20:16
Buenas Noches amig@s estoy realizando una base de datos en MySql con MysQl workbench, sucede que al momento de importar desde PhpMyadmin el escript generado por workbench me dá el error Duplicate key name 'fk_espec'.
Agradeceria me orientaran cone ste problema ya que soy nueva aprendiendo sobre bases de datos y MySql. Saludos y desde yá gracias!!!

el codigo que trato de importar es el siguiente:


SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0;
SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0;
SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='TRADITIONAL';

CREATE SCHEMA IF NOT EXISTS `gestorw` DEFAULT CHARACTER SET latin1 COLLATE latin1_swedish_ci ;
USE `gestorw`;

-- -----------------------------------------------------
-- Table `gestorw`.`especialidad`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `gestorw`.`especialidad` (
`idespecialidad` INT NOT NULL ,
`desc_especialidad` VARCHAR(45) NOT NULL ,
PRIMARY KEY (`idespecialidad`) )
ENGINE = InnoDB;

-- -----------------------------------------------------
-- Table `gestorw`.`distrito`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `gestorw`.`distrito` (
`iddistrito` INT NOT NULL ,
`nom_distrito` VARCHAR(60) NOT NULL ,
`idmunicipio` INT NOT NULL ,
PRIMARY KEY (`iddistrito`) )
ENGINE = InnoDB;

-- -----------------------------------------------------
-- Table `gestorw`.`municipio`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `gestorw`.`municipio` (
`idmunicipio` INT NOT NULL ,
`nom_municipio` VARCHAR(50) NOT NULL ,
PRIMARY KEY (`idmunicipio`) )
ENGINE = InnoDB;

-- -----------------------------------------------------
-- Table `gestorw`.`renglon`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `gestorw`.`renglon` (
`idrenglon` INT NOT NULL ,
`desc_renglon` VARCHAR(45) NOT NULL ,
PRIMARY KEY (`idrenglon`) )
ENGINE = InnoDB;

-- -----------------------------------------------------
-- Table `gestorw`.`empleado_permanente`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `gestorw`.`empleado_permanente` (
`idempleado_permanente` INT NOT NULL ,
`nom_empleado` VARCHAR(45) NOT NULL ,
`nom_antecesor` VARCHAR(45) NOT NULL ,
`idespecialidad` INT NOT NULL ,
`p_presupuestaria` VARCHAR(45) NOT NULL ,
`f_ingreso_mspas` DATE NOT NULL ,
`salariobase` FLOAT NOT NULL ,
`bonificacion` FLOAT NOT NULL ,
`reubicado` VARCHAR(45) NOT NULL ,
`iddistrito` INT NOT NULL COMMENT ' ' ,
`idmuicipio` INT NOT NULL ,
`cargo` VARCHAR(45) NOT NULL ,
`idrenglon` INT NOT NULL ,
PRIMARY KEY (`idempleado_permanente`) ,
CONSTRAINT `fk_espec`
FOREIGN KEY (`idespecialidad` )
REFERENCES `gestorw`.`especialidad` (`idespecialidad` )
ON DELETE CASCADE
ON UPDATE CASCADE,
CONSTRAINT `fk_distritopermanente`
FOREIGN KEY (`iddistrito` )
REFERENCES `gestorw`.`distrito` (`iddistrito` )
ON DELETE CASCADE
ON UPDATE CASCADE,
CONSTRAINT `fk_municipiopermanente`
FOREIGN KEY (`idmuicipio` )
REFERENCES `gestorw`.`municipio` (`idmunicipio` )
ON DELETE CASCADE
ON UPDATE CASCADE,
CONSTRAINT `fk_renglonpermanente`
FOREIGN KEY (`idrenglon` )
REFERENCES `gestorw`.`renglon` (`idrenglon` )
ON DELETE CASCADE
ON UPDATE CASCADE)
ENGINE = InnoDB
COMMENT = ' empleados permanentes ';

CREATE INDEX `fk_espec` ON `gestorw`.`empleado_permanente` (`idespecialidad` ASC) ;

CREATE INDEX `fk_distritopermanente` ON `gestorw`.`empleado_permanente` (`iddistrito` ASC) ;

CREATE INDEX `fk_municipiopermanente` ON `gestorw`.`empleado_permanente` (`idmuicipio` ASC) ;

CREATE INDEX `fk_renglonpermanente` ON `gestorw`.`empleado_permanente` (`idrenglon` ASC) ;

-- -----------------------------------------------------
-- Table `gestorw`.`empledo_contrato`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `gestorw`.`empledo_contrato` (
`idempledo_contrato` INT NOT NULL ,
`nom_empleado` VARCHAR(45) NOT NULL ,
`cargo` VARCHAR(45) NOT NULL ,
`num_contrato` VARCHAR(45) NOT NULL ,
`vig_contrato` VARCHAR(45) NOT NULL ,
`honor_mensual` FLOAT NOT NULL ,
`honor_anual` FLOAT NOT NULL ,
`iddistrito` INT NOT NULL ,
`idmunicipio` INT NOT NULL ,
`c_servicios` VARCHAR(45) NOT NULL ,
`fecha_ingreso_mspas` DATE NOT NULL ,
`fecha_ingreso_contrato` DATE NOT NULL ,
`fecha_ingreso_financiero` DATE NOT NULL ,
`idmunicipio` INT NOT NULL ,
`iddistrito` INT NOT NULL ,
PRIMARY KEY (`idempledo_contrato`) ,
CONSTRAINT `fk_municipiocontrato`
FOREIGN KEY (`idmunicipio` )
REFERENCES `gestorw`.`municipio` (`idmunicipio` )
ON DELETE CASCADE
ON UPDATE CASCADE,
CONSTRAINT `fk_distritocontrato`
FOREIGN KEY (`iddistrito` )
REFERENCES `gestorw`.`distrito` (`iddistrito` )
ON DELETE CASCADE
ON UPDATE CASCADE)
ENGINE = InnoDB
COMMENT = '\n';

CREATE INDEX `fk_municipiocontrato` ON `gestorw`.`empledo_contrato` (`idmunicipio` ASC) ;

CREATE INDEX `fk_distritocontrato` ON `gestorw`.`empledo_contrato` (`iddistrito` ASC) ;

-- -----------------------------------------------------
-- Table `gestorw`.`vacacion`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `gestorw`.`vacacion` (
`idvacacion` INT NOT NULL ,
`idempleado_permanente` INT NOT NULL ,
`nom_empleado` VARCHAR(45) NOT NULL ,
`desde` DATE NOT NULL ,
`hasta` DATE NOT NULL ,
`diasgozados` INT NOT NULL ,
PRIMARY KEY (`idvacacion`) ,
CONSTRAINT `fk_vacacionpermanente`
FOREIGN KEY (`idempleado_permanente` )
REFERENCES `gestorw`.`empleado_permanente` (`idempleado_permanente` )
ON DELETE CASCADE
ON UPDATE CASCADE)
ENGINE = InnoDB;

CREATE INDEX `fk_vacacionpermanente` ON `gestorw`.`vacacion` (`idempleado_permanente` ASC) ;

-- -----------------------------------------------------
-- Table `gestorw`.`salariop`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `gestorw`.`salariop` (
`idsalariop` INT NOT NULL AUTO_INCREMENT ,
`idempleado_permanente` INT NOT NULL ,
`nom_empleado` VARCHAR(45) NOT NULL ,
`mes` DATE NOT NULL ,
`salariobase` FLOAT NOT NULL ,
`bonificacion` FLOAT NOT NULL ,
`totalmes` FLOAT NOT NULL ,
PRIMARY KEY (`idsalariop`) ,
CONSTRAINT `fk_salariopermanente`
FOREIGN KEY (`idempleado_permanente` )
REFERENCES `gestorw`.`empleado_permanente` (`idempleado_permanente` )
ON DELETE CASCADE
ON UPDATE CASCADE)
ENGINE = InnoDB;

CREATE INDEX `fk_salariopermanente` ON `gestorw`.`salariop` (`idempleado_permanente` ASC) ;

-- -----------------------------------------------------
-- Table `gestorw`.`salarioc`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `gestorw`.`salarioc` (
`idsalarioc` INT NOT NULL ,
`idempleado_contrato` INT NOT NULL ,
`nom_empleado` VARCHAR(45) NOT NULL ,
`cargo` VARCHAR(45) NOT NULL ,
`honor_mensual` FLOAT NOT NULL ,
PRIMARY KEY (`idsalarioc`) ,
CONSTRAINT `fk_salariocontrato`
FOREIGN KEY (`idempleado_contrato` )
REFERENCES `gestorw`.`empledo_contrato` (`idempledo_contrato` )
ON DELETE CASCADE
ON UPDATE CASCADE)
ENGINE = InnoDB;

CREATE INDEX `fk_salariocontrato` ON `gestorw`.`salarioc` (`idempleado_contrato` ASC) ;


SET SQL_MODE=@OLD_SQL_MODE;
SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS;
SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS;
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Error al exportar a MySql

Publicado por Gonzalo GC (339 intervenciones) el 27/10/2009 12:15:36
Una FOREIGN KEY genera un índice que es el que mantiene la relación entre la PK originaria y el campo FK de otra tabla.
Cuando usas una herramietna CASE como MySQL Workbench, al crear las relaciones de FK se les asigna un nombre, generalmente tomado de la tabla destino. Uno de los conectores de tu gráfico de tablas apunta a la misma PK o usa el mismo nombre de campo en la FK, de modo que está intentando crear dos índices con el mismo nombre (los nombres de las CONTRAINT).
Verifica las relaciones de FK que tienes en el gráfico y ponle manualmente los nombres a la cosntraint de modo que no haya dos iguales. Eso te resolverá el conflicto
En tu caso, estás creando una restricción de FK en la tabla empleado_permanente que se llama igual que un índice que estás creando en la misma tabla.

Un tip: Cuando una constraint comienza con "FK" es porque se refiere a una FOREIGN KEY.... Que es lo que debías buscar
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Error al exportar a MySql

Publicado por deliriodelunallena (2 intervenciones) el 28/10/2009 00:11:09
Gracias Gonzalo! tomé en cuenta tus observaciones y mi problema quedó solucionado!! nuevamente Gracias!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar