Ver Mensaje Individual
  #1 (permalink)  
Antiguo 06/06/2014, 01:41
chitin
 
Fecha de Ingreso: agosto-2005
Mensajes: 9
Antigüedad: 18 años, 8 meses
Puntos: 0
Pregunta mysql errores al crear FK

Estoy literalmente desesperada...llevo 3 días con este problema en el trabajo y no veo manera de resolverlo...

Estas son mis tablas:
Código MySQL:
Ver original
  1. CREATE TABLE `dvaggregatecomponents` (
  2. `AGGREGATEKEY` varchar(256) NOT NULL,
  3. `AGGREGATEVERSION` int(4) NOT NULL,
  4. `COMPONENTKEY` varchar(256) NOT NULL,
  5. `COMPONENTVERSION` int(4) NOT NULL,
  6. `ADMIN` int(1) NOT NULL,
  7. PRIMARY KEY (`AGGREGATEKEY`(255),`AGGREGATEVERSION`,`COMPONENT KEY`(255),`COMPONENTVERSION`)

Código MySQL:
Ver original
  1. CREATE TABLE `dvaggregates` (
  2. `AGGREGATEKEY` varchar(256) NOT NULL,
  3. `VERSION` int(4) NOT NULL,
  4. `PROFILEMANAGER` int(10) DEFAULT NULL,
  5. `CUSTOMPORTLETMODE` varchar(4000) DEFAULT NULL,
  6. `CUSTOMWINDOWSTATE` varchar(4000) DEFAULT NULL,
  7. PRIMARY KEY (`AGGREGATEKEY`(255),`VERSION`)

Creando la FK:

Código MySQL:
Ver original
  1. ALTER TABLE `dvaggregatecomponents`
  2. ADD CONSTRAINT dvaggregatecomponents_fk
  3. FOREIGN KEY (`AGGREGATEKEY`, `AGGREGATEVERSION` )
  4. REFERENCES `dvaggregates` (`AGGREGATEKEY` , `VERSION` )

me devuelve:
Error Code: 1071. Specified key was too long; max key length is 767 bytes

Limito entonces el campo varchar:
Código MySQL:
Ver original
  1. ALTER TABLE `dvaggregatecomponents`
  2. ADD CONSTRAINT dvaggregatecomponents_fk
  3. FOREIGN KEY (`AGGREGATEKEY`(249), `AGGREGATEVERSION` )
  4. REFERENCES `dvaggregates` (`AGGREGATEKEY` , `VERSION` )
y el error es:

Error Code: 1215. Cannot add foreign key constraint

no encuentro el problema!!

Los campos son del mismo tipo en ambas tablas, la BD está vacía, el orden es el mismo, las columnas son PK, no hago SET NOT NULL ni en DELETE ni en UPDATE ...

¿Alguna idea?

Un millón de gracias!!!!!

Última edición por gnzsoloyo; 06/06/2014 a las 06:40 Razón: SQL sin etiquetar