внешний ключ для полей Varchar. MySQL

Пытаюсь добавить внешний ключ в таблицу, но не удается и не понимаю почему.

CREATE TABLE `one` (
    `id` INT PRIMARY KEY AUTO_INCREMENT,
    `имя` VARCHAR(255)
)ENGINE=INNODB;

CREATE TABLE `two` (
    `id` INT PRIMARY KEY AUTO_INCREMENT,
    `имя` VARCHAR(255),
    `фамилия` VARCHAR(255),
    INDEX ind_name (`имя`)
)ENGINE=INNODB;

ALTER TABLE `two` ADD 
    FOREIGN KEY (`имя`) REFERENCES `one`(`имя`)

выдает ошибку

#1822 - Failed to add the foreign key constraint. Missing index for constraint 'two_ibfk_1' in the referenced table 'one'

Ответы (2 шт):

Автор решения: Алексей Шиманский

Колонка, на которую ссылаются из другой таблицы через foreign key должна иметь индекс, о чём, собственно, текст и говорит

Missing index for constraint 'two_ibfk_1' in the referenced table 'one'

→ Ссылка
Автор решения: Егор Банин

Лучший способ понять инструмент, которым пользуешься -- прочитать инструкцию. Иногда кажется, что и так понятно как всё работает, и в документацию можно не заглядывать. Но научитесь начинать расследование неожиданного поведения программы с чтения документации.

У MySQL отличная документация. И в ней сказано:

remember to first create an index on the column(s) referenced by the foreign key

Кроме того там сказано, что такие индексы при необходимости будут созданы автоматически при добавлении ограничения во время создания таблицы. Видимо это поведение и ввело вас в заблуждение.

→ Ссылка