/ / Як збільшити довжину ключа в MySQL 5.1? - mysql

Як збільшити довжину ключа в MySQL 5.1? - mysql

Під час міграції Rails, що створює індекс, я отримую:

Mysql::Error: Specified key was too long; max key length is 1000 bytes: CREATE UNIQUE INDEX `index_matches_on_foo_and_bar_id_and_baz_id` ON `matches` (`foo`, `bar_id`, `baz_id`)

Яку змінну MySQL мені потрібно встановити, щоб збільшити її, і де її встановити, щоб вона впливала на всі сесії, а не тільки на поточну сесію клієнта?

Відповіді:

9 для відповіді № 1

InnoDB фактично дозволяє лише 768 BYTES в індексі. Також зауважте, що закодовані рядки utf-8 займають 3 байти на символ, тому у вас є лише 768/3 символів, з якими можна грати в цьому індексі.

Можливим рішенням є обмеження довжинивикористання поля в індексі. Однак, оскільки ви також бажаєте мати унікальний індекс, це може бути не прийнятним рішенням для вас. Використовуйте наступне, щоб обмежити довжину використовуваних полів.

CREATE UNIQUE INDEX `index_matches_on_foo_and_bar_id_and_baz_id` ON `matches` (`foo`(100), `bar_id`(100), `baz_id`(100))

8 для відповіді № 2

Від Посібник MySQL:

Msgstr "Максимальна довжина ключа - 1000 байтів. \ T Це також можна змінити шляхом зміни джерело та перекомпіляція "


0 для відповіді № 3

Просто змініть сортування з однієї опції на іншу, яка підтримує необхідну довжину ключа. Мені персонально довелося chnage від сервера за замовчуванням до латини 1 - за замовчуванням.