Назад | Перейти на главную страницу

MySQl: Указан слишком длинный ключ .. max составляет 1000 байт?

Я пытаюсь создать таблицу в MySQL с заявлением:

CREATE TABLE tags (Tag VARCHAR(200) NOT NULL default '', Login VARCHAR(255) NOT NULL default '', PRIMARY KEY (Tag, Login)) ENGINE=MyISAM;

Однако я получаю сообщение об ошибке:

ERROR 1071 (42000): Specified key was too long; max key length is 1000 bytes

Если я уменьшу Тег в поле VARCHAR (78) таблица создается, однако VARCHAR (79) не работает. Почему любой размер varchar больше 78 не работает? Я прочитал несколько сообщений в Интернете о том, что MySQL хранит VARCHAR как UTF-8, который может занимать до шести байтов, но 79 * 6 - это 474, что находится в пределах 1000-байтового ограничения, поэтому не уверен, что они UTF-8 точны .

Ваш первичный ключ состоит из тега и логина, общая длина которых составляет 355 символов.
Если тег равен 78 символам, общее количество составляет 333, поэтому похоже, что MySQL делает предположение о 3 байтах на символ:

(78 + 255) * 3 = 999, (79 + 255) * 3 = 1002

Тем не менее, значения VARCHAR, как известно, не подходят для первичных ключей.

Вместо этого рассмотрите возможность добавления INT.