gpt4 book ai didi

mysql - 指定的 key 太长 : max key lenth is 3072 bytes

转载 作者:搜寻专家 更新时间:2023-10-30 20:26:54 25 4
gpt4 key购买 nike

我需要你的帮助,我已经实例化了所有关系表,但是当我要创建关系表时,它向我发送“错误: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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com