【问题标题】:how do I circumvent the max key length in mySQL?如何规避 mySQL 中的最大密钥长度?
【发布时间】:2012-06-03 19:57:30
【问题描述】:

我正在创建一个表,索引大量测量值,分布在各种文件中。在不同的表中,对于不同类型的数据,我使用数据文件的绝对路径作为唯一索引。这工作得很好。

但是,当我现在尝试在我的新表中重现该设置时,我得到了

mysql> alter table weights change column path path varchar(1000); ERROR 1071 (42000):指定的密钥太长;最大密钥长度为 767 字节

这很奇怪,因为我另一个表中的同一列被描述为:

| Field               | Type          | Null | Key | Default | Extra |
+---------------------+---------------+------+-----+---------+-------+
| path                | varchar(1000) | YES  | UNI | NULL    |       |

那么,我上次是如何绕过这个限制的呢?我应该告诉我自从创建第一个表以来我已经重新安装了 linux (& mySQL),所以很可能在我不知情的情况下更改了一些默认值。

当我启动 mySQL 时,欢迎信息是:

Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 128
Server version: 5.5.22-0ubuntu1 (Ubuntu)

当我搜索以前的答案时,一般的反应似乎是“嗯,就是这样”,但显然不是?

提前谢谢你:)

【问题讨论】:

标签: mysql mysql-error-1071


【解决方案1】:

检查主键的定义 - 您可能在第一个表上使用了部分前缀键索引。

总体上更好的解决方案是使用文件路径的哈希作为主键并将文件路径本身存储在另一列中。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-02-25
  • 2016-10-04
  • 2010-12-22
  • 2017-11-23
相关资源
最近更新 更多