我正在创建一个索引大量测量的表,分布在各种文件中。在另一个表中,对于不同类型的数据,我使用了数据文件的绝对路径作为唯一索引。这非常有效。
然而,当我现在尝试在我的新表中重现该设置时,我得到了
的MySQL> alter table weights change change 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)
当我搜索以前的答案时,一般的反应似乎是“好吧,那就是它的方式”,但很明显它不是?
提前谢谢你:)
答案 0 :(得分:3)
检查主键的定义 - 您可能在第一个表上使用了部分前缀键索引。
总体上更好的解决方案是使用文件路径的哈希作为主键,并将文件路径本身存储在另一列中。