MySQL erro: "Coluna 'ColumnName' não pode ser parte de índice FULLTEXT"

votos
8

Recentemente eu mudei um monte de colunas para utf8_general_ci (o padrão UTF-8 agrupamento), mas ao tentar alterar uma determinada coluna, recebi o erro MySQL:

Column 'node_content' cannot be part of FULLTEXT index

Ao olhar através de docs, parece que o MySQL tem um problema com índices FULLTEXT em alguns conjuntos de caracteres multi-bytes, como UCS-2, mas que deve funcionar em UTF-8.

Eu estou na última versão MySQL 5.0.x estável (5.0.77 eu acredito).

Publicado 17/03/2009 em 06:14
fonte usuário
Em outras línguas...                            


3 respostas

votos
27

Opa, então eu ter encontrado a resposta para o meu problema:

Todas as colunas de um índice FULLTEXT devem ter não só o mesmo conjunto de caracteres, mas também o mesmo agrupamento .

Meu índice FULLTEXT teve utf8_unicode_ci em uma de suas colunas, e utf8_general_ci em suas outras colunas.

Respondeu 17/03/2009 em 06:16
fonte usuário

votos
4

Só para acrescentar um bom conselho de Thomas: E para resolver as coisas no PHPMyAdmin você tem que mudar o conjunto de caracteres para todas as colunas AO MESMO TEMPO.

Apenas perdido metade de um dia de tentar novamente e novamente para alterar as colunas uma de cada vez e continuamente recebendo a mensagem de erro sobre o índice FULLTEXT.

Respondeu 09/05/2012 em 07:55
fonte usuário

votos
0

Para DBeaver usuários / ferramenta de banco de dados.

Quando você usar a interface para modificar mais de uma coluna, a ferramenta gerar comandos como este:

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;

Isto não está funcionando porque você deve modificar os conjuntos de caracteres ao mesmo tempo.

Então, você tem que mudá-lo manualmente, em um comando:

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 ou utf8mb4 ? Veja aqui .

Respondeu 26/11/2018 em 10:13
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more