Ошибка MySQL: «Столбец« имя столбца »не может быть частью индекса FULLTEXT» - PullRequest
10 голосов
/ 17 марта 2009

Недавно я изменил группу столбцов на utf8_general_ci (стандартная сортировка UTF-8), но при попытке изменить определенный столбец я получил ошибку MySQL:

Column 'node_content' cannot be part of FULLTEXT index

При просмотре документов выясняется, что у MySQL есть проблема с индексами FULLTEXT в некоторых многобайтовых кодировках, таких как UCS-2, но она должна работать в UTF-8.

Я пользуюсь последней стабильной версией MySQL 5.0.x (я думаю, 5.0.77).

Ответы [ 3 ]

33 голосов
/ 17 марта 2009

К сожалению, я нашел ответ на свою проблему:

Все столбцы индекса FULLTEXT должны иметь не только одинаковый набор символов, но также одинаковое сопоставление .

Мой индекс FULLTEXT имел utf8_unicode_ci в одном из своих столбцов и utf8_general_ci в других столбцах.

5 голосов
/ 09 мая 2012

Просто добавлю к доброму совету Томаса: и чтобы разобраться в PHPMyAdmin, вы должны изменить набор символов для всех столбцов ОДНОВРЕМЕННО.

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

0 голосов
/ 26 ноября 2018

Для DBeaver / пользователей базы данных.

Когда вы используете интерфейс для изменения нескольких столбцов, инструмент генерирует такие команды:

ALTER TABLE databaseName.tableName MODIFY COLUMN columnName1 text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL;
ALTER TABLE databaseName.tableName MODIFY COLUMN columnName2 varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL;

Это не работает, потому что вы должны изменить кодировки одновременно.

Итак, вы должны изменить его вручную, одной командой:

ALTER TABLE databaseName.tableName 
MODIFY COLUMN columnName1 text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL,
MODIFY COLUMN columnName2 text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL;

utf8 или utf8mb4 ? Смотрите здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...