0

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

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

mysql> alter table weights 改变列路径 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)

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

先感谢您 :)

4

1 回答 1

3

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

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

于 2012-05-29T15:13:45.163 回答