Как обойти максимальную длину ключа в 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)

когда я искал предыдущие ответы, общий ответ, по-видимому, был примерно таким: "ну, это так, как есть", но ясно, что это не так?

Заранее спасибо:)

1 ответ

Проверьте определение первичного ключа - возможно, вы использовали частичный префиксный индекс ключа в первой таблице.

В целом, лучшим решением было бы использование хэша пути к файлу в качестве первичного ключа и сохранение самого пути к файлу в другом столбце.

Другие вопросы по тегам