2016-05-05 5 views
0

Простой вопрос. Если у меня есть таблица вроде следующего:MySQL Изменение длины ключа

CREATE TABLE `exampletable` (
    `id` int(11) NOT NULL AUTO_INCREMENT, 
    `textfield` varchar(700) DEFAULT NULL, 
    PRIMARY KEY (`id`), 
    KEY `textfield` (`textfield`) 
) ENGINE=InnoDB DEFAULT CHARSET=latin1; 

Как изменить длину textfield KEY? Для latin1 charset длина по умолчанию - 767, а для UTF8 - 255. Но если у меня есть таблица latin1, например, как мне изменить ключ, чтобы увеличить максимальную длину 255?

ответ

1

Вы можете создать индекс на передней части VARCHAR(x) колонны. Смотрите здесь:

http://dev.mysql.com/doc/refman/5.7/en/create-index.html

CREATE INDEX part_of_textfield ON example_table (textfield(10)); 

Это поможет с поисками. Но это не полезно в качестве первичного ключа или с GROUP BY.

Вы можете также включить это в определении таблицы, как так:

CREATE TABLE exampletable (
    id int(11) NOT NULL AUTO_INCREMENT, 
    textfield varchar(700) DEFAULT NULL, 
    PRIMARY KEY (id), 
    KEY partial_textfield (textfield(10)) 
) 
1

Попробуйте

ALTER TABLE <table_name> MODIFY <col_name> VARCHAR(255); 

Убедитесь, что вы не более 255 символов

+0

Как я понял из вашего поста, это не возможно, чтобы изменить длину ключа, не изменяя длину самой колонны? –

+0

Нет. Проверка длины на столбце ... ключ «выводится» из столбца ... – scaisEdge

Смежные вопросы