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: