我正在尝试运行 alter table 命令,但收到以下错误:
#1069 - 指定的键太多;最多允许 64 个键
任何帮助将不胜感激
根据 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
不幸的是编译后似乎没有办法改变
此错误意味着您的表上有超过 64 个索引。每个表最多只能有 64 个索引。
您通常不会指定最多 65 个索引,因此当您在 mysql 中运行多个 alter 命令并且列上始终有
UNIQUE
索引时,会导致此错误。因为显然,它接缝 alter 命令不是重置唯一字段上的索引,而是创建一个全新的索引。
即:如果列电子邮件被标记为
UNIQUE
,则会为其创建索引email
。如果您更改表并且列 email 上仍然有 UNIQUE
,则会为该列创建一个新的 email
索引,但命名为 email_2
而不是 email
,后者可能会替换之前的索引。
使用具有 UNIQUE
的 email
email_(n)
索引。这就是为什么达到最大值。
为了防止这个错误
UNIQUE
,请将其删除或在运行 alter 命令之前首先删除表中的上一个索引。通常 ORM 用户,ORM 在每次启动时运行相同的完整命令。UNIQUE
命令,则索引已创建,因此请勿运行另一个命令。对于 ORM 用户,请从列属性中删除唯一约束注意:我只在MYSQL中注意到这一点,并且我注意到它不会发生在其他索引上,例如
primary
,fulltext
等,除了unique
之外。
这是我注意到的。我希望它有帮助
看起来信息很明确...你不能有一个包含超过 64 个键的表(主键、外键甚至索引)