mysql错误1069指定的键太多;最多允许 64 个键

问题描述 投票:0回答:3

我正在尝试运行 alter table 命令,但收到以下错误:

#1069 - 指定的键太多;最多允许 64 个键

任何帮助将不胜感激

mysql numbers max key
3个回答
8
投票

根据 mysql 论坛,您必须使用

进行编译

./configure --prefix=/usr/local/mysql --with-charset=cp1251 --enable-thread-safe-client --with-max-indexes=256

来源:http://forums.mysql.com/read.php?22,53666,262189#msg-262189

不幸的是编译后似乎没有办法改变


0
投票

此错误意味着您的表上有超过 64 个索引。每个表最多只能有 64 个索引。

您通常不会指定最多 65 个索引,因此当您在 mysql 中运行多个 alter 命令并且列上始终有

UNIQUE
索引时,会导致此错误。因为显然,它接缝 alter 命令不是重置唯一字段上的索引,而是创建一个全新的索引。

即:如果列电子邮件被标记为

UNIQUE
,则会为其创建索引
email
。如果您更改表并且列
email 上仍然有 UNIQUE,则会为该列创建一个新的 
email
索引,但命名为
email_2
而不是
email
,后者可能会替换之前的索引。

使用具有 UNIQUEemail

 编写的更改命令越多,会导致更多 
email_(n)
索引。这就是为什么达到最大值。

为了防止这个错误

  • 如果您的 email 列上仍然有
    UNIQUE
    ,请将其删除或在运行 alter 命令之前首先删除表中的上一个索引。通常 ORM 用户,ORM 在每次启动时运行相同的完整命令。
  • 如果您已运行
    UNIQUE
    命令,则索引已创建,因此请勿运行另一个命令。对于 ORM 用户,请从列属性中删除唯一约束

注意:我只在MYSQL中注意到这一点,并且我注意到它不会发生在其他索引上,例如

primary
fulltext
等,除了
unique
之外。

这是我注意到的。我希望它有帮助


-6
投票

看起来信息很明确...你不能有一个包含超过 64 个键的表(主键、外键甚至索引)

© www.soinside.com 2019 - 2024. All rights reserved.