Error ERROR 1071 (42000) al importar una base de datos Drupal
Tratando de importar una copia de base de datos que había creado con drush sql-dump en otro servidor, me he encontrado con este error de MySQL:
ERROR 1071 (42000) at line 25: Specified key was too long; max key length is 767 bytes
El comando que estaba usando era bastante normal:
drush sql-cli < ../backup.sql
Después de intentar varias opciones, también he llegado a ver este otro error:
ERROR 1709 (HY000) at line 25: Index column size too large. The maximum column size is 767 bytes.
La versión de MySQL que estaba usando es 5.6.30-1, como podéis ver aquí:
dpkg -l | grep mysql-server ii mysql-server 5.6.30-1 all MySQL database server (metapackage depending on the latest version) ii mysql-server-5.6 5.6.30-1 amd64 MySQL database server binaries and system database setup ii mysql-server-core-5.6 5.6.30-1 amd64 MySQL database server binaries
El problema venia de la configuración de INNODB en mi servidor, y la solución es bastante sencilla, basta con editar el fichero de configuracion de MySQL (como root o usando sudo), que en Debian está en:
vi /etc/mysql/my.cnf
Si no teneis ese fichero puede que este aquí:
vi /etc/mysql/mysql.conf.d/mysqld.cnf
Tenemos que incluir las siguientes líneas de configuración en la sección de [mysqld]:
innodb_file_format = true innodb_file_per_table=true innodb_file_format=barracuda
Después reiniciamos el servidor y listo:
service mysql restart
Ahora si intentamos importar la base de datos de nuevo no deberíamos tener problemas.
EDIT:
Si no podemos tocar la configuración del servidor, podemos ejecutar esto directamente en mysql antes de ejecutar nuestra query:
SET @@global.innodb_large_prefix = 1;
Referencias:
Gracias por este articulo, me estaba volviendo loco con esto