2012-05-29 36 views
0

我創建了一個索引很多測量值的表格,分佈在各種文件中。在不同的表格中,對於不同類型的數據,我使用數據文件的絕對路徑作爲唯一索引。這工作得很好。我如何規避mySQL中的最大密鑰長度?

然而,當我現在嘗試重現建立在我的新表,我得到

的mysql>修改表的權重更改列路徑路徑VARCHAR(1000); 錯誤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

好這個問題的答案可以在這裏找到:http://stackoverflow.com/questions/1814532/1071-specified-key-was-too-long-max-key-length-is-767-bytes/1814594 #1814594 –

+0

我想我普通不明白這些問題的答案 – Kaare

回答

3

檢查定義主鍵 - 您可能使用在第一臺的部分前綴關鍵指標。

更好的解決方案整體是使用文件路徑的散列作爲主鍵與存儲在另一個列中的文件路徑本身。

+0

什麼是「文件路徑的哈希值」? – Kaare

+0

@Kaare - 類似於MD5或SHA。 PHP和MySQL都內置了哈希函數。看到這裏的解釋:http://en.wikipedia.org/wiki/Hash_function –

相關問題