mysql - Specified key was too long: max key lenth is 3072 bytes -
i need this, have relation tables instantiated when im going create relationship table sends me "error: 1071 specified key long: max key lenth 3072 bytes"
my code until now:
create table tablahechos( id_almacenf varchar(255) not null, id_productof varchar(255) not null, id_categoriaf varchar(255) not null, id_transaccionf varchar(255) not null, id_tipo_serviciof varchar(255) not null, id_mensajerof varchar(255) not null, id_clientef varchar(255) not null, id_tiempo_fecha_orden varchar(255) not null, id_tiempo_fecha_reserva_entrada varchar(255) not null, id_tiempo_fecha_reserva_salida varchar(255) not null, id_tiempo_fecha_inventario_entrada varchar(255) not null, id_tiempo_fecha_inventario_salida varchar(255) not null, id_tiempo_fecha_envio varchar(255) not null, id_tiempo_fecha_facturacion varchar(25) not null, id_tiempo_fecha_cancelada varchar(255) not null, para_regalo varchar(45) not null, monto_unitario varchar(255) not null, monto_total varchar(45) not null, cantidad varchar(255) not null, primary key (id_almacenf, id_productof, id_categoriaf, id_transaccionf, id_tipo_serviciof, id_mensajerof, id_clientef, id_tiempo_fecha_orden, id_tiempo_fecha_reserva_entrada, id_tiempo_fecha_reserva_salida, id_tiempo_fecha_inventario_entrada, id_tiempo_fecha_inventario_salida, id_tiempo_fecha_envio, id_tiempo_fecha_facturacion, id_tiempo_fecha_cancelada), constraint fk1 foreign key (id_almacenf) references almacendim (id_almacen), constraint fk2 foreign key (id_productof) references productodim (id_producto), constraint fk3 foreign key (id_categoriaf) references categoriadim (id_categoria), constraint fk4 foreign key (id_transaccionf) references transacciondim (id_transaccion), constraint fk5 foreign key (id_mensajerof) references mensajerodim (id_mensajero), constraint fk6 foreign key (id_clientef) references clientedim (id_cliente), constraint fk7 foreign key (id_tiempo_fecha_orden) references tablahechos (id_tiempo_fecha_orden), constraint fk8 foreign key (id_tiempo_fecha_reserva_entrada) references tablahechos (id_tiempo_fecha_reserva_entrada), constraint fk9 foreign key (id_tiempo_fecha_reserva_salida) references tablahechos (id_tiempo_fecha_reserva_salida), constraint fk10 foreign key (id_tiempo_fecha_inventario_entrada) references tablahechos (id_tiempo_fecha_inventario_entrada), constraint fk11 foreign key (id_tiempo_fecha_inventario_salida) references tablahechos (id_tiempo_fecha_inventario_salida), constraint fk12 foreign key (id_tiempo_fecha_envio) references tablahechos (id_tiempo_fecha_envio), constraint fk13 foreign key (id_tiempo_fecha_facturacion) references tablahechos (id_tiempo_fecha_facturacion), constraint fk14 foreign key (id_tiempo_fecha_cancelada) references tablahechos (id_tiempo_fecha_cancelada) ) engine=innodb default charset=latin1;
i change charset latin1
, nothing happens, know primary key long must way. should do?
fortunately, there maximum key length, because primary key way long.
i suggest adding auto incremented primary key table:
create table tablahechos ( id_hechos int not null auto_increment primary key, id_almacenf varchar(255) not null, . . .
what give you? well, simplified primary key helps in several ways:
- it makes much easier find single row in table.
- it simplifies foreign key references.
- it provides mechanism of determining order of row insertion.
if want build key on columns, can shorten length of columns 32. "id" column really need 255 characters in length? if so, should replace them numeric ids in tables well. in fact, should using integer ids these columns, joins additional information them.
Comments
Post a Comment