Ver Mensaje Individual
  #1 (permalink)  
Antiguo 08/04/2010, 15:47
Avatar de korg1988
korg1988
 
Fecha de Ingreso: junio-2006
Ubicación: Santa Fe, Argentina
Mensajes: 825
Antigüedad: 17 años, 10 meses
Puntos: 19
De acuerdo Problemita con consulta

La cosa es asi, cree un diagrama de la base de datos con MySQL Workbench, y ahora al querer exportarlo, me tira error 1005 y 121

Les dejo el codigo que Workbench genera a la hora de hacer la exportacion, y mas abajo les dejo el codigo de error tal cual el programa lo devuelve.

Edito: He probado borrando la linea del comando CONSTRAINT en cada consulta y ha funcionado, pero no se si estoy quebrando la integridad de la base de datos al borrar esa linea, de todas formas, me gustaria encontrarle una solucion porque no es muy comodo andar borrando cada vez que voy a hacer un cambio y reflejarlo en la DB.

Aqui la consulta
Código MySQL:
Ver original
  1. SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0;
  2. SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0;
  3. SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='TRADITIONAL';
  4.  
  5. CREATE  TABLE IF NOT EXISTS `sistema`.`serv_by_acc` (
  6.   `acc_id` INT(255) NOT NULL ,
  7.   `serv_id` INT(11) NOT NULL ,
  8.   INDEX `acc_id` (`acc_id` ASC) ,
  9.   INDEX `serv_id` (`serv_id` ASC) ,
  10.   PRIMARY KEY (`serv_id`, `acc_id`) ,
  11.   CONSTRAINT `acc_id`
  12.     FOREIGN KEY (`acc_id` )
  13.     REFERENCES `sistema`.`accounts` (`id` )
  14.   CONSTRAINT `serv_id`
  15.     FOREIGN KEY (`serv_id` )
  16.     REFERENCES `sistema`.`services` (`id` )
  17. DEFAULT CHARACTER SET = utf8
  18. COLLATE = utf8_unicode_ci;
  19.  
  20. CREATE  TABLE IF NOT EXISTS `sistema`.`support_tickets` (
  21.   `id` INT(255) NOT NULL AUTO_INCREMENT ,
  22.   `acc_id` INT(255) NOT NULL ,
  23.   `topic` VARCHAR(255) NOT NULL ,
  24.   `opening_date` DATETIME NOT NULL ,
  25.   `closing_date` DATETIME NULL DEFAULT NULL ,
  26.   `opened` TINYINT(1) NOT NULL DEFAULT 1 COMMENT 'Abierto o cerrado, pero en actividad' ,
  27.   `closed` TINYINT(1) NOT NULL DEFAULT 0 COMMENT 'Cerrado permanentemente' ,
  28.   PRIMARY KEY (`id`) ,
  29.   INDEX `acc_id` (`acc_id` ASC) ,
  30.   CONSTRAINT `acc_id`
  31.     FOREIGN KEY (`acc_id` )
  32.     REFERENCES `sistema`.`accounts` (`id` )
  33. DEFAULT CHARACTER SET = utf8
  34. COLLATE = utf8_unicode_ci;
  35.  
  36. CREATE  TABLE IF NOT EXISTS `sistema`.`support_ticket_messages` (
  37.   `ticket_id` INT(255) NOT NULL ,
  38.   `acc_id` INT(255) NOT NULL COMMENT 'El id de la cuenta del administrador de tickets' ,
  39.   `date` DATETIME NOT NULL ,
  40.   `message` TEXT NOT NULL ,
  41.   `rate` INT(1) NULL DEFAULT NULL COMMENT 'Puntuacion de parte del usuario para la respuesta del admin, 1-5' ,
  42.   INDEX `ticket_id` (`ticket_id` ASC) ,
  43.   INDEX `acc_id` (`acc_id` ASC) ,
  44.   CONSTRAINT `ticket_id`
  45.     FOREIGN KEY (`ticket_id` )
  46.     REFERENCES `sistema`.`support_tickets` (`id` )
  47.   CONSTRAINT `acc_id`
  48.     FOREIGN KEY (`acc_id` )
  49.     REFERENCES `sistema`.`accounts` (`id` )
  50. DEFAULT CHARACTER SET = utf8
  51. COLLATE = utf8_unicode_ci;
  52.  
  53. DROP TABLE IF EXISTS `sistema`.`sdf` ;
  54.  
  55. ALTER TABLE `sistema`.`checking_account` CHANGE COLUMN `debit` `debit` DECIMAL NULL DEFAULT NULL  , CHANGE COLUMN `credit` `credit` DECIMAL NULL DEFAULT NULL  ;
  56.  
  57. ALTER TABLE `sistema`.`accounts` CHANGE COLUMN `name` `name` VARCHAR(50) NULL DEFAULT NULL  , CHANGE COLUMN `lastname` `lastname` VARCHAR(50) NULL DEFAULT NULL  , CHANGE COLUMN `company` `company` VARCHAR(50) NULL DEFAULT NULL  , CHANGE COLUMN `username` `username` VARCHAR(20) NULL DEFAULT NULL  , CHANGE COLUMN `password` `password` VARCHAR(20) NULL DEFAULT NULL  , CHANGE COLUMN `email` `email` VARCHAR(50) NULL DEFAULT NULL  , CHANGE COLUMN `city` `city` VARCHAR(50) NULL DEFAULT NULL  , CHANGE COLUMN `avatar` `avatar` VARCHAR(255) NULL DEFAULT NULL  ;
  58.  
  59. ALTER TABLE `sistema`.`accounts_types` CHANGE COLUMN `type` `type` VARCHAR(20) NOT NULL  ;
  60.  
  61. ALTER TABLE `sistema`.`comp_allowed_acc` CHANGE COLUMN `mode` `mode` INT(1) NULL DEFAULT NULL COMMENT '\'1 normal, 2 admi'  , DROP FOREIGN KEY `comp_allowed_acc_ibfk_1` , DROP FOREIGN KEY `comp_allowed_acc_ibfk_2` ;
  62.  
  63. ALTER TABLE `sistema`.`comp_allowed_acc`
  64.   ADD CONSTRAINT `acc_comp_id`
  65.   FOREIGN KEY (`acc_comp_id` )
  66.   REFERENCES `sistema`.`accounts` (`id` )
  67.   ADD CONSTRAINT `acc_id`
  68.   FOREIGN KEY (`acc_id` )
  69.   REFERENCES `sistema`.`accounts` (`id` )
  70.  
  71.  
  72. SET SQL_MODE=@OLD_SQL_MODE;
  73. SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS;
  74. SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS;

Aqui el error

Código MySQL:
Ver original
  1. Executing SQL script in server
  2.  
  3. ERROR: Error 1005: Can't create table 'sistema.serv_by_acc' (errno: 121)
  4.  
  5.  
  6.  
  7.  
  8.  
  9. CREATE  TABLE IF NOT EXISTS `sistema`.`serv_by_acc` (
  10.  
  11.  `acc_id` INT(255) NOT NULL ,
  12.  
  13.  `serv_id` INT(11) NOT NULL ,
  14.  
  15.  INDEX `acc_id` (`acc_id` ASC) ,
  16.  
  17.  INDEX `serv_id` (`serv_id` ASC) ,
  18.  
  19.  PRIMARY KEY (`serv_id`, `acc_id`) ,
  20.  
  21.  CONSTRAINT `acc_id`
  22.  
  23.    FOREIGN KEY (`acc_id` )
  24.  
  25.    REFERENCES `sistema`.`accounts` (`id` )
  26.  
  27.    ON DELETE CASCADE
  28.  
  29.    ON UPDATE CASCADE,
  30.  
  31.  CONSTRAINT `serv_id`
  32.  
  33.    FOREIGN KEY (`serv_id` )
  34.  
  35.    REFERENCES `sistema`.`services` (`id` )
  36.  
  37.    ON DELETE RESTRICT
  38.  
  39.    ON UPDATE CASCADE)
  40.  
  41. ENGINE = InnoDB
  42.  
  43. DEFAULT CHARACTER SET = utf8

Gracias por la atencion