2016-07-11 4 views
0

J'essaie de comprendre pourquoi ma base de données n'accepte pas une clé composite unique sur MySQL v5.7.12 et en utilisant InnoDB. J'ai trouvé beaucoup de menaces sur les limites de tailles et de problèmes de clés uniques quand on les atteint, mais mes tailles sont loin d'atteindre ces limites (moins de 255 caractères même!). Les docs MySQL disent que la limite de clé est 3072bytes! http://dev.mysql.com/doc/refman/5.7/en/innodb-restrictions.htmlMySQL clé unique semble prendre seulement les premiers 17 caractères de varchar

Pour simplifier, je fournir les informations connexes sur le terrain:

| ascii_name  | varchar(200)  | YES |  | NULL |  | 
| feature_class | char(1)   | YES |  | NULL |  | 
| feature_code | varchar(10)  | YES |  | NULL |  | 

Je suis en train d'ajouter une clé composite unique,

mysql> alter table geonames_geonames add unique (ascii_name,feature_code,feature_class); 
ERROR 1062 (23000): Duplicate entry 'Rudkhaneh-ye Shur-STM-H' for key 'ascii_name' 
mysql> 

De l'erreur et le contenu de la table je me suis dit qu'il utilise seulement les 17 premiers caractères du champ. Mais pourquoi? Si je vérifie la table

mysql> select ascii_name,feature_code,feature_class from geonames_geonames where name like 'Rudkhaneh-ye Shur-%'; 
+-------------------------------+--------------+---------------+ 
| ascii_name     | feature_code | feature_class | 
+-------------------------------+--------------+---------------+ 
| Rudkhaneh-ye Shur-e Dehram | STM   | H    | 
| Rudkhaneh-ye Shur-e Sabzevar | STM   | H    | 
| Rudkhaneh-ye Shur-e Sar Dasht | STM   | H    | 
+-------------------------------+--------------+---------------+ 
3 rows in set (0.00 sec) 

mysql> 

J'ai également essayé de donner une taille mais le résultat est identique.

mysql> alter table geonames_geonames add unique (ascii_name(200),feature_code,feature_class); 
ERROR 1062 (23000): Duplicate entry 'Rudkhaneh-ye Shur-STM-H' for key 'ascii_name' 
mysql> 

Alors, d'où vient cette limite? et est-il possible de l'augmenter? Tous les liens vers la documentation qui décrit cette limite sont les bienvenus!

Merci!

+2

essayer 'comme « Rudkhaneh-vous Shur% '' – Alex

+0

omg vous avez raison ... –

Répondre

0

Apparemment, l'erreur imprime uniquement la valeur et ajoute un tiret après, donc en effet j'avais des lignes en double :( je cherchais simplement à des entrées erronées ...

mysql> select ascii_name,feature_code,feature_class from geonames_geonames where name like 'Rudkhaneh-ye Shur%'; 
+--------------------------------+--------------+---------------+ 
| ascii_name      | feature_code | feature_class | 
+--------------------------------+--------------+---------------+ 
| Rudkhaneh-ye Shur    | AREA   | L    | 
| Rudkhaneh-ye Shur    | SBED   | T    | 
| Rudkhaneh-ye Shur    | STM   | H    | 
| Rudkhaneh-ye Shur    | STM   | H    | 
| Rudkhaneh-ye Shur    | STM   | H    | 
| Rudkhaneh-ye Shur    | STM   | H    | 
| Rudkhaneh-ye Shur    | STM   | H    | 
| Rudkhaneh-ye Shur    | STM   | H    | 
| Rudkhaneh-ye Shur    | STM   | H    | 
| Rudkhaneh-ye Shur    | STM   | H    | 
| Rudkhaneh-ye Shur    | STM   | H    | 
| Rudkhaneh-ye Shur    | STM   | H    | 
| Rudkhaneh-ye Shur    | STM   | H    | 
| Rudkhaneh-ye Shur    | STM   | H    | 
| Rudkhaneh-ye Shur    | STM   | H    | 
| Rudkhaneh-ye Shur    | STM   | H    | 
| Rudkhaneh-ye Shur    | STM   | H    | 
| Rudkhaneh-ye Shur    | STM   | H    | 
| Rudkhaneh-ye Shur    | STM   | H    | 
| Rudkhaneh-ye Shur    | STM   | H    | 
| Rudkhaneh-ye Shur    | STM   | H    | 
| Rudkhaneh-ye Shur    | STM   | H    | 
| Rudkhaneh-ye Shur    | STM   | H    | 
| Rudkhaneh-ye Shur    | STM   | H    | 
| Rudkhaneh-ye Shur    | STM   | H    | 
| Rudkhaneh-ye Shur    | STM   | H    | 
| Rudkhaneh-ye Shur    | STM   | H    | 
| Rudkhaneh-ye Shur    | STM   | H    | 
| Rudkhaneh-ye Shur    | STM   | H    | 
| Rudkhaneh-ye Shur    | STM   | H    | 
| Rudkhaneh-ye Shur    | STM   | H    | 
| Rudkhaneh-ye Shur    | STM   | H    | 
| Rudkhaneh-ye Shur    | STM   | H    | 
| Rudkhaneh-ye Shur    | STM   | H    | 
| Rudkhaneh-ye Shur    | STM   | H    | 
| Rudkhaneh-ye Shur    | STM   | H    | 
| Rudkhaneh-ye Shur    | STM   | H    | 
| Rudkhaneh-ye Shur    | STM   | H    | 
| Rudkhaneh-ye Shur    | STM   | H    | 
| Rudkhaneh-ye Shur    | STM   | H    | 
| Rudkhaneh-ye Shur    | STM   | H    | 
| Rudkhaneh-ye Shur    | STM   | H    | 
| Rudkhaneh-ye Shur    | STM   | H    | 
| Rudkhaneh-ye Shur    | STM   | H    | 
| Rudkhaneh-ye Shur    | STM   | H    | 
| Rudkhaneh-ye Shur    | STM   | H    | 
| Rudkhaneh-ye Shur    | STM   | H    | 
| Rudkhaneh-ye Shur    | STM   | H    | 
| Rudkhaneh-ye Shur    | STM   | H    | 
| Rudkhaneh-ye Shur    | STM   | H    | 
| Rudkhaneh-ye Shur    | STM   | H    | 
| Rudkhaneh-ye Shur    | STM   | H    | 
| Rudkhaneh-ye Shur    | STM   | H    | 
| Rudkhaneh-ye Shur    | STM   | H    | 
| Rudkhaneh-ye Shur    | STM   | H    | 
| Rudkhaneh-ye Shur    | STM   | H    | 
| Rudkhaneh-ye Shur    | STM   | H    | 
| Rudkhaneh-ye Shur    | STM   | H    | 
| Rudkhaneh-ye Shur    | STM   | H    | 
| Rudkhaneh-ye Shur    | STM   | H    | 
| Rudkhaneh-ye Shur    | STM   | H    | 
| Rudkhaneh-ye Shur    | STM   | H    | 
| Rudkhaneh-ye Shur    | STM   | H    | 
| Rudkhaneh-ye Shur    | STM   | H    | 
| Rudkhaneh-ye Shur    | STM   | H    | 
| Rudkhaneh-ye Shur    | STM   | H    | 
| Rudkhaneh-ye Shur    | STM   | H    | 
| Rudkhaneh-ye Shur    | STM   | H    | 
| Rudkhaneh-ye Shur    | STM   | H    | 
| Rudkhaneh-ye Shur    | STM   | H    | 
| Rudkhaneh-ye Shur    | STM   | H    | 
| Rudkhaneh-ye Shur    | STM   | H    | 
| Rudkhaneh-ye Shur    | STM   | H    | 
| Rudkhaneh-ye Shur    | STM   | H    | 
| Rudkhaneh-ye Shur    | STM   | H    | 
| Rudkhaneh-ye Shur    | STM   | H    | 
| Rudkhaneh-ye Shur    | STM   | H    | 
| Rudkhaneh-ye Shur    | STMI   | H    | 
| Rudkhaneh-ye Shur    | STMI   | H    | 
| Rudkhaneh-ye Shur    | STMI   | H    | 
| Rudkhaneh-ye Shur    | STMI   | H    | 
| Rudkhaneh-ye Shur    | STMI   | H    | 
| Rudkhaneh-ye Shur    | STMX   | H    | 
| Rudkhaneh-ye Shur Ab   | STM   | H    | 
| Rudkhaneh-ye Shur Ab   | STM   | H    | 
| Rudkhaneh-ye Shur Ab   | STM   | H    | 
| Rudkhaneh-ye Shur Ab   | STM   | H    | 
| Rudkhaneh-ye Shur Ab   | STM   | H    | 
| Rudkhaneh-ye Shur Ab   | STM   | H    | 
| Rudkhaneh-ye Shur Ab   | STM   | H    | 
| Rudkhaneh-ye Shur Ab   | STM   | H    | 
| Rudkhaneh-ye Shur Ab   | STM   | H    | 
| Rudkhaneh-ye Shur Ab   | STM   | H    | 
| Rudkhaneh-ye Shur Ab   | STMI   | H    | 
| Rudkhaneh-ye Shur Ab   | STMI   | H    | 
| Rudkhaneh-ye Shur Ab Qandu  | STMI   | H    | 
| Rudkhaneh-ye Shur Barik  | STM   | H    | 
| Rudkhaneh-ye Shur Bid   | STM   | H    | 
| Rudkhaneh-ye Shur Chah-e Nahr | STM   | H    | 
| Rudkhaneh-ye Shur Chay   | STM   | H    | 
| Rudkhaneh-ye Shur Chay   | STM   | H    | 
| Rudkhaneh-ye Shur Chay   | STM   | H    | 
| Rudkhaneh-ye Shur Ghamish  | STMI   | H    | 
| Rudkhaneh-ye Shur Gol Shang | STM   | H    | 
| Rudkhaneh-ye Shur Goleh Gah | STM   | H    | 
| Rudkhaneh-ye Shur Jajarm  | STM   | H    | 
| Rudkhaneh-ye Shur Khar Turan | STM   | H    | 
| Rudkhaneh-ye Shur Mahur  | STMI   | H    | 
| Rudkhaneh-ye Shur Mur Dar Bala | STM   | H    | 
| Rudkhaneh-ye Shur Naseri  | STMI   | H    | 
| Rudkhaneh-ye Shur Shah Gheyb | STM   | H    | 
| Rudkhaneh-ye Shur-e Dehram  | STM   | H    | 
| Rudkhaneh-ye Shur-e Sabzevar | STM   | H    | 
| Rudkhaneh-ye Shur-e Sar Dasht | STM   | H    | 
| Rudkhaneh-ye Shurab   | STM   | H    | 
| Rudkhaneh-ye Shurab   | STM   | H    | 
| Rudkhaneh-ye Shurab   | STM   | H    | 
| Rudkhaneh-ye Shurab   | STM   | H    | 
| Rudkhaneh-ye Shurab   | STM   | H    | 
| Rudkhaneh-ye Shurabeh   | STM   | H    | 
| Rudkhaneh-ye Shurabeh   | STM   | H    | 
| Rudkhaneh-ye Shurak   | STM   | H    | 
| Rudkhaneh-ye Shurak   | STMI   | H    | 
| Rudkhaneh-ye Shurani   | STMI   | H    | 
| Rudkhaneh-ye Shurava   | STMI   | H    | 
| Rudkhaneh-ye Shureh   | STM   | H    | 
| Rudkhaneh-ye Shureh   | STM   | H    | 
| Rudkhaneh-ye Shureh   | STM   | H    | 
| Rudkhaneh-ye Shureh Kand  | STM   | H    | 
| Rudkhaneh-ye Shureh Kot  | STM   | H    | 
| Rudkhaneh-ye Shureh Lang  | STMI   | H    | 
| Rudkhaneh-ye Shuru    | STM   | H    | 
| Rudkhaneh-ye Shurug   | STM   | H    | 
| Rudkhaneh-ye Shurug   | STM   | H    | 
+--------------------------------+--------------+---------------+ 
134 rows in set (0.00 sec) 

mysql>