Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Problemita con consulta

Estas en el tema de Problemita con consulta en el foro de Mysql en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 08/04/2010, 15:47
Avatar de korg1988  
Fecha de Ingreso: junio-2006
Ubicación: Santa Fe, Argentina
Mensajes: 825
Antigüedad: 17 años, 9 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
  #2 (permalink)  
Antiguo 08/04/2010, 16:08
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: Problemita con consulta

Ya te fijaste si ya existen todas las tablas a las que hace referencia esta tabla?
Puede haber un problema en el orden de la tabla y esta no se deja crear.

saludos
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #3 (permalink)  
Antiguo 08/04/2010, 19:04
Avatar de korg1988  
Fecha de Ingreso: junio-2006
Ubicación: Santa Fe, Argentina
Mensajes: 825
Antigüedad: 17 años, 9 meses
Puntos: 19
Respuesta: Problemita con consulta

Ah eso puede provocar ese error??, quiere decir que primero debo crear las tablas maestras antes de que se creen las tablas que contienen las llaves foraneas??

Voy a intentar eso, igual confirmame
  #4 (permalink)  
Antiguo 08/04/2010, 20:12
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: Problemita con consulta

Claro que si es importante el orden. Como podrías crear una tabla haciendo referencia a otra que hasta el momento no existe?

Ahora... te digo esto por que veo que el script está sintacticamente bien, pero no aseguro que ese sea el problema.

saludos korg1988
__________________
Without data, You are another person with an opinion.
W. Edwads Deming

Etiquetas: Ninguno
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 12:03.