MySQL多列主键
多列主键(MySQL)的最大列数是多少?它是否取决于列数据类型或引擎?我发现: 有人试图创建包含2列的PK,但收到了以下错误:MySQL多列主键,mysql,Mysql,多列主键(MySQL)的最大列数是多少?它是否取决于列数据类型或引擎?我发现: 有人试图创建包含2列的PK,但收到了以下错误: “指定的键太长;最大键长度为1024字节”因此,看起来最大键长度为1024字节,与列数无关,真正重要的是变量类型和分配给它的空间 我见过一些这样的例子: create table OS_PROPERTYENTRY (entity_name VARCHAR(125) not null, entity_id BIGINT not null, entity_key VARC
“指定的键太长;最大键长度为1024字节”因此,看起来最大键长度为1024字节,与列数无关,真正重要的是变量类型和分配给它的空间 我见过一些这样的例子:
create table OS_PROPERTYENTRY (entity_name VARCHAR(125) not null, entity_id BIGINT not null,
entity_key VARCHAR(255) not null date_val DATETIME, primary key (entity_name, entity_id, entity_key))
在哪里
125*(3字节)+255*(3字节)+1*(8字节)=1148字节。所以不可能创建PK
看看这里,他们在谈论它:是的,它取决于存储引擎
- : 每个索引的最大列数为16。最大密钥长度 是1000字节。这也可以通过更改源和 重新编译。对于长度超过250字节的密钥,则使用更大的密钥 使用比默认值1024字节大的块大小
- : InnoDB内部最大密钥长度为3500字节,但MySQL本身 将此限制为3072字节。此限制适用于管道的长度 多列索引中的组合索引键