Je viens d'installer Debian 8.3 sur une machine virtuelle et installé xampp après cela Tutorial. Tout fonctionne, jusqu'à ce que j'essayé de créer une nouvelle table:mysql modifier innodb_large_prefix
create table testtable
(
id int(10) not null auto_increment,
firstname varchar(255) collate utf8mb4_german2_ci not null,
lastname varchar(255) collate utf8mb4_german2_ci not null,
primary key (id),
unique key (lastname)
)engine = innodb default charset=utf8mb4, collate=utf8mb4_german2_ci
Je suis l'erreur: #1709 - Index column size too large. The maximum column size is 767 bytes.
Puis j'ai découvert cela vient du prefix limitation
qui se limite à 767Byte dans Innodb
et je peux résoudre ce problème en jeu le fichier innodb_large_prefix dans le fichier my.cnf. Mais je ne peux pas trouver le fichier, ce n'est pas /etc/
et theres pas /etc/mysql/
-dossier, le seul my.cnf
j'ai trouvé est /opt/lampp/etc/
, cependant, après avoir ajouté le innodb_large_prefix=1
dans le fichier et redémarré lampp. J'ai toujours la même erreur. Qu'ai-je fait de mal?
modifier: SELECT version()
retours 5.6.14
, donc innodb_large_prefix
doit être pris en charge.
edit2: Je sais que je peux contourner ce problème en définissant seulement une partie de la clé en tant qu'index pour passer sous 767Byte. Mais je veux savoir comment configurer correctement le mysql.
Son pas très clair où je devrais mettre ceux-ci, dans le fichier 'my.cnf' j'ai trouvé dans le'/opt/lampp/etc/'dossier? J'ai vu quelques suggestions où ils ont mis 'ROW_FORMAT = DYNAMIC' dans la ligne' engine', mais cela n'a pas résolu le problème pour moi. – yangsunny
en cours d'exécution 'SHOW GLOBAL VARIABLES LIKE 'innodb_fil%'' donnez-moi le résultat que 'innodb_file_per_table' est déjà activé. J'ai donc ajouté la ligne 'innodb_file_format = Barracuda' (sans SET GLOBAL) et' innodb_large_prefix = 1' dans le fichier 'my.cnf' et' ROW_FORMAT = DYNAMIC' à la fin de CREATE. Et ça marche! Merci beaucoup. Une chose, le changement file_format aura-t-il un effet sur mes données existantes? – yangsunny
Non. Tous ces paramètres sont capturés lors de la création d'une table. (Vous pouvez modifier les tables existantes en utilisant ALTER.) J'ai ajouté une note. –