2010-08-09 21 views
0

je reçois l'erreur suivante lorsque vous essayez d'ajouter un index FULLTEXT Titre, édition et auteur dans ma base de données MySQL:clé FULLTEXT trop long

clé spécifiée est trop longue; max longueur de clé est de 1000 octets

Voici les colonnes:

`Title` varchar(255) NOT NULL, 
`Edition` varchar(20) default NULL, 
`Authors` varchar(255) default NULL, 

Aucun d'entre eux sont uniques .. Même la combinaison de tous les trois n'est pas unique. La clé primaire sur la base de données est l'ISBN.

La raison pour laquelle j'ajoute cet index FULLTEXT est que les gens peuvent rechercher des livres en utilisant un mot-clé qui pourrait inclure le titre, l'édition ou l'auteur.

+0

La réponse à cette question a déjà été donnée [ici] (http://stackoverflow.com/questions/3489041/mysqlerror-specified-key-was-too-long-max-key-length-is-1000-bytes/3489331 # 3489331). –

Répondre

1

MySQL a une limite sur la quantité d'espace allouée pour les index - it's 1000 bytes for MyISAM, 767 for InnoDB.

La seule façon de contourner la limitation est de définir les clés qui indexent une partie de la colonne - ce qui signifie que tout ce qui sera dans l'indice, ce qui limite sa valeur:

CREATE INDEX index_name ON YOUR_TABLE(title(100), edition, authors(100)); 

Ce indexera le premier 100 caractères de la colonne titre, toutes les colonnes de l'édition et 100 caractères de la colonne des auteurs. Je crois est un ratio de 3 à 1 pour les colonnes VARCHAR, donc VARCHAR (250) prend 750 octets.

+0

super merci – babonk