Ver Mensaje Individual
  #1 (permalink)  
Antiguo 06/05/2015, 07:55
metalfox6383
 
Fecha de Ingreso: octubre-2006
Mensajes: 267
Antigüedad: 17 años, 6 meses
Puntos: 6
Pregunta No puedo crear un FK

Hola:

Estoy actualizando mi modelo en Workbench agregándole FK a mis tablas, pero para una de ellas me sale que no es posible porque le falta un índice a la tabla referenciada.

Aquí coloco los códigos de las tablas, la tabla "presupuestos" referencia a "clientes" y final coloco el error que me salta cuando trato de sincronizar mi modelo con la tabla física.

Código MySQL:
Ver original
  1. CREATE TABLE IF NOT EXISTS `bd_macroimagen`.`clientes` (
  2.   `FE_CREA` DATETIME NULL,
  3.   `FE_MODI` DATETIME NULL,
  4.   `US_CREA` VARCHAR(45) NULL,
  5.   `US_MODI` VARCHAR(45) NULL,
  6.   `IP` VARCHAR(100) NULL,
  7.   `RUC` VARCHAR(11) NOT NULL,
  8.   `GrupoCliente` VARCHAR(45) NOT NULL,
  9.   `RazonSocial` VARCHAR(100) NOT NULL,
  10.   `Direccion` VARCHAR(200) NOT NULL,
  11.   `DireccionGuia` VARCHAR(200) NOT NULL,
  12.   PRIMARY KEY (`RUC`))
  13. DEFAULT CHARACTER SET = latin1

Código MySQL:
Ver original
  1. CREATE TABLE `presupuestos` (
  2.   `FE_CREA` datetime DEFAULT NULL,
  3.   `FE_MODI` datetime DEFAULT NULL,
  4.   `US_CREA` varchar(45) DEFAULT NULL,
  5.   `US_MODI` varchar(45) DEFAULT NULL,
  6.   `IP` varchar(100) DEFAULT NULL,
  7.   `id` varchar(13) NOT NULL,
  8.   `CuentaUsuario` varchar(45) DEFAULT NULL,
  9.   `GrupoCliente` varchar(45) NOT NULL COMMENT 'El alias del cliente se copia de la tabla de clientes. El alias será parte del código de cotización.',
  10.   `Anio` int(10) unsigned NOT NULL,
  11.   `Numero` int(11) NOT NULL COMMENT 'El código va con el alias del cliente tomada en este mismo registro.',
  12.   `Version` int(11) NOT NULL,
  13.   `RUCCliente` varchar(11) NOT NULL,
  14.   `NombreContacto` varchar(250) DEFAULT NULL,
  15.   `Referencia` varchar(200) NOT NULL,
  16.   `Estado` enum('en_edicion','por_revisar','por_respuesta_del_cliente','en_produccion','terminado','anulado','interno','por_documentacion') NOT NULL,
  17.   `DocumentoPendiente` varchar(100) DEFAULT NULL,
  18.   `IGV` int(11) NOT NULL,
  19.   `Observaciones` text NOT NULL,
  20.   `FechaProgramadaEntrega` datetime DEFAULT NULL,
  21.   `FechaEntregado` datetime DEFAULT NULL,
  22.   PRIMARY KEY (`id`),
  23.   KEY `fk_table1_usuarios1_idx` (`CuentaUsuario`),
  24.   KEY `fk_presupuestos_clientes1_idx` (`RUCCliente`),
  25.   CONSTRAINT `fk_table1_usuarios1` FOREIGN KEY (`CuentaUsuario`) REFERENCES `usuarios` (`Cuenta`) ON DELETE NO ACTION ON UPDATE CASCADE

Código MySQL:
Ver original
  1. Executing SQL script in server
  2. ERROR: Error 1822: Failed to add the foreign key constaint. Missing index for constraint 'fk_presupuestos_clientes1' in the referenced table 'clientes'
  3. SQL Code:
  4.         ALTER TABLE `bd_macroimagen`.`presupuestos`
  5.         ADD CONSTRAINT `fk_presupuestos_clientes1`
  6.           FOREIGN KEY (`RUCCliente`)
  7.           REFERENCES `bd_macroimagen`.`clientes` (`RUC`)
  8.           ON DELETE NO ACTION
  9.           ON UPDATE NO ACTION
  10.  
  11. SQL script execution finished: statements: 5 succeeded, 1 failed
  12.  
  13. Fetching back view definitions in final form.
  14. Nothing to fetch

Espero me ayuden a resolverlo. Muchas gracias.

Saludos.

Última edición por gnzsoloyo; 06/05/2015 a las 08:02