ERREUR mysql 1071 (clé Spécifié est trop long; max la longueur de la clé est de 1000 octets) en simple dump-importation de réglage
dump de la db mysql sur le serveur 1
$ mysql --version
mysql Ver 14.14 Distrib 5.1.54, for debian-linux-gnu (x86_64) using readline 6.2
$ mysqldump -u root -p db > db.sql
importer sur le serveur 2
$ mysql --version
mysql Ver 14.12 Distrib 5.0.95, for unknown-linux-gnu (x86_64) using readline 5.1
$ mysql -u root -p db < db.sql
ERROR 1071 (42000) at line 807: Specified key was too long; max key length is 1000 bytes
Je sais il y a beaucoup de questions et de réponses sur cette erreur, mais il me laisse encore perplexe.
Peut-il être un problème de version? Je le soupçonne pas.
Si je le lance avec l'option --force, il obtient la même wierder:
ERROR 1071 (42000) at line 807: Specified key was too long; max key length is 1000 bytes
ERROR 1146 (42S02) at line 847: Table 'db.users' doesn't exist
ERROR 1146 (42S02) at line 848: Table 'db.users' doesn't exist
ERROR 1146 (42S02) at line 849: Table 'db.users' doesn't exist
ERROR 1146 (42S02) at line 850: Table 'db.users' doesn't exist
ce qui se passe?
Je veux dire en dehors de la résolution de ce, j'aimerais comprendre quels sont les paramètres qui affectent un simple dump-importation de loi et pourquoi ces paramètres est pas explicite dans mon fichier de vidage et d'être ensemble t d'importation.
Je préfère ne pas avoir à déboguer les erreurs réelles, ce doit être solveable de haut niveau.
MISE À JOUR: SOLUTION
Frédéric m'a indiqué la bonne direction. Fondamentalement, mon dump est d'essayer de mettre en db avec le moteur INNODB, mais mysql sur le serveur 2 a dans /etc/my.cnf
[mysqld]
skip-innodb
par la simple suppression de cette option et de redémarrer mysqld, mon importation couru sans un croassement.
Je suis très triste une telle chose simple comme un indisponible moteur n'est pas digne d'avertissement ou d'erreur plutôt que de la longueur de la clé causée par silencieusement tomber en myISAM. Hmm. Donc le temps de passer à posgresql? mongo? 🙂
- Êtes-vous d'utiliser innodb? Est innodb activé sur les deux machines ? (cochez la has_innodb variable dans la sortie de show variables)
- OUI sur le serveur 1, DÉSACTIVÉ sur le serveur 2.
Vous devez vous connecter pour publier un commentaire.
Sonne comme innodb est désactivé sur la deuxième machine, de sorte que mysql en silence retombe à myisam qui a ses propres limites: 1000 octets par clé au lieu de 3500
La dernière fois que j'ai vu quelque chose comme cela, c'était à cause d'un problème de configuration: mysql ne peut pas le programme d'installation innodb au démarrage de sorte qu'il désactive innodb. Vérifiez votre mysql journal des erreurs, il doit signaler les éventuels problèmes rencontrés lors du démarrage. Par exemple, innodb va refuser d'initialiser si le
innodb_log_file_size
paramètre ne correspond pas à la taille des fichiers journaux (ib_logfile0
,ib_logfile1
, ...)Ce travail pour moi.
Erreur: “#1071 – clé Spécifié est trop long; max la longueur de la clé est de 767 octets” lors de l'importation de bases de données mysql
En outre, si votre système est en 64 bits et que vous exécutez MySQL à partir de yum (référentiel par défaut), vous obtiendrez cette erreur lors de tenter de restaurer la base de données provenant d'autres systèmes. Je ne sais pas pourquoi "yum install mysql mysql-devel mysql-server", juste courir avec 32 bits.
Donc, dans ce cas, s'il vous plaît installer et utiliser MySQL à partir de Percona ou Marina (bien sûr, est la version 64 bits)