web-dev-qa-db-fra.com

Problème d'index MySQL FULLTEXT

J'essaie de créer un index FULLTEXT sur un attribut d'une table. Mysql revient

ERREUR 1214: Le type de table utilisé ne prend pas en charge les index FULLTEXT.

Une idée de ce que je fais mal?

29
user119038

Vous utilisez le mauvais type de table. Mysql prend en charge plusieurs types de tables différents, mais les plus couramment utilisés sont MyISAM et InnoDB. MyISAM (dans MySQL 5.6 + également les tables InnoDB) sont les types de tables que Mysql prend en charge pour les index de texte intégral.

Pour vérifier le type de votre table, lancez la requête SQL suivante:

SHOW TABLE STATUS

En regardant le résultat renvoyé par la requête, recherchez votre table et la valeur correspondante dans la colonne Moteur. Si cette valeur est autre que MyISAM ou InnoDB, alors Mysql générera une erreur si vous essayez d'ajouter des index FULLTEXT.

Pour corriger cela, vous pouvez utiliser la requête SQL ci-dessous pour modifier le type de moteur:

ALTER TABLE <table name> ENGINE = [MYISAM | INNODB]

Informations supplémentaires (jugées utiles): Mysql utilisant différents types de stockage de moteur pour optimiser les fonctionnalités nécessaires de tables spécifiques. Exemple MyISAM est le type par défaut pour les systèmes d'exploitation (en plus de Windows), préforme SELECT et INSERT rapidement; mais ne gère pas les transactions. InnoDB est la valeur par défaut pour Windows, peut être utilisé pour les transactions. Mais InnoDB nécessite plus d'espace disque sur le serveur.

55
Cimplicity

Jusqu'à MySQL 5.6, MyISAM était le seul moteur de stockage prenant en charge la recherche en texte intégral (FTS), mais il est vrai que InnoDB FTS dans MySQL 5.6 est syntaxiquement identique à MyISAM FTS. Veuillez lire ci-dessous pour plus de détails.

Recherche plein texte InnoDB dans MySQL 5.6

10
Sukhjinder Singh

Le manuel mysql indique que les index FULLTEXT ne peuvent être créés que sur des tables avec le moteur mylsam.

7
soulmerge

Utilisez-vous InnoDB? Le seul type de table qui prend en charge FULLTEXT est MyISAM.

5

à part la table MyISAM PARTITIONING ne supporte pas non plus full-text index.

1