Impossible de créer un index sur une table

Résolu/Fermé
Absot Messages postés 777 Date d'inscription mardi 28 octobre 2008 Statut Membre Dernière intervention 4 septembre 2020 - Modifié par Absot le 3/02/2012 à 17:17
 le père - 3 févr. 2012 à 20:49
Bonjour, je souhaiterais créer un index sur une de mes tables seulement quand je le fais, j'obtiens cette erreur: #1089 - Incorrect prefix key; the used key part isn't a string, the used length is longer than the key part, or the storage engine doesn't support unique prefix keys

Je comprends que le préfixe de la clé n'est pas correct parce qu'elle n'est pas un string et ca me dit que la longueur utilisée est la même que celle de la clé ou que le moteur de stockage ne ??supporte pas les clés de préfixe unique.

Voilà la requête que j'essaie d'exécuter:
ALTER TABLE '***'.'valuespost' ADD UNIQUE 'metric_id' ('metric_id'(1), 'post_id'(1), 'criteria'(1)) 


Ainsi que la structure de ma table:
CREATE TABLE IF NOT EXISTS 'valuespost' ( 
  'id' int(11) NOT NULL AUTO_INCREMENT, 
  'metric_id' int(11) NOT NULL, 
  'post_id' varchar(50) NOT NULL, 
  'criteria' varchar(255) NOT NULL, 
  'value' varchar(255) NOT NULL, 
  PRIMARY KEY ('id') 
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ; 


Que puis-je faire pour obtenir mon index svp?


A voir également:

1 réponse

Bonjour

La clé metric_id est un nombre, il ne faut pas lui assigne de longueur :
ALTER TABLE 'playapp_insights'.'valuespost' ADD UNIQUE 'metric_id' ('metric_id', 'post_id'(1), 'criteria'(1))


D'ailleurs, tes longueurs de 1 sur les autres clés me semblent très bizarres...
0
Absot Messages postés 777 Date d'inscription mardi 28 octobre 2008 Statut Membre Dernière intervention 4 septembre 2020 44
3 févr. 2012 à 17:38
Peux-tu éditer ton post stp pour enlever le nom de la BDD juste après 'ALTER TABLE'?

J'ai essayé cette requête:
ALTER TABLE  'valuespost' ADD UNIQUE 'metric_id' ('metric_id' , 'post_id' , 'criteria' )


Et j'ai obtenu ce que je voulais, c'est résolu, merci de ton aide.
0
Non, je ne peux pas éditer. Je ne vois d'ailleurs pas pourquoi le nom de ta base serait confidentiel. Surtout sans aucun nom de site associé !
0