Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySQL多列主键_Mysql - Fatal编程技术网

MySQL多列主键

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

多列主键(MySQL)的最大列数是多少?它是否取决于列数据类型或引擎?

我发现:

有人试图创建包含2列的PK,但收到了以下错误:
“指定的键太长;最大键长度为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字节。此限制适用于管道的长度 多列索引中的组合索引键


它在sql server 2008中是16。。不知道abt mysql,它说主键的最大长度是1000字节。我不确定这是否已经改变,我认为MyiSAM的限制是1000字节,InnoDB引擎的限制是3072字节。