- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我需要你的帮助,我已经实例化了所有关系表,但是当我要创建关系表时,它向我发送“错误:1071 指定的 key 太长:最大 key 长度为 3072 字节”
到目前为止我的代码:
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;
我已经将字符集更改为 latin1
但没有任何反应,我知道我的主键太长但它必须是那样的。我该怎么办?
最佳答案
幸运的是,有最大 key 长度,因为您的主键太长了。
我强烈建议向表中添加一个自动递增的主键:
CREATE TABLE tablahechos (
id_hechos int not null auto_increment primary key,
id_almacenf VARCHAR(255) NOT NULL,
. . .
这给了你什么?嗯,这个简化的主键在几个方面有帮助:
如果您想在所有这些列上构建一个键,您可以将列的长度缩短到 32 之类的长度。“id”列真的需要 255 个字符的长度吗?如果是这样,您也应该在这些表中用数字 ID 替换它们。事实上,您可能应该为所有这些列使用整数 ID,并使用连接来查找有关它们的其他信息。
关于mysql - 指定的 key 太长 : max key lenth is 3072 bytes,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29319026/
我需要将副作用设置为 2 的数组大小,查看以下定义: https://github.com/google/googletest/blob/master/googlemock/docs/CheatShe
我有一个 *.pvd 格式的巨大网格。我想确保在构建所述网格时遵守一些单元尺寸规范。为此,我应该获取一个包含 (dx,dy,dz) 的单元格数据数组 我首先尝试在 Paraview 中检查这一点,但收
我需要你的帮助,我已经实例化了所有关系表,但是当我要创建关系表时,它向我发送“错误:1071 指定的 key 太长:最大 key 长度为 3072 字节” 到目前为止我的代码: CREATE TABL
我是一名优秀的程序员,十分优秀!