O dicho en el idioma de los errores de sistema, ERROR 2006 (HY000) at line 21232: MySQL server has gone away
.
$ mysql -h localhost -u user -pUltraSecurePass mydatabase < dump.sql
ERROR 2006 (HY000) at line 21232: MySQL server has gone away
$
El lío
El error me apareció cuando intentaba importar la base de un wordpress en una instalación de MariaDB 10.1.37-0+deb9u1. Tengo que decir que el fichero SQL no es muy diferente al montón de importaciones que he hecho con MySQL, tiene un tamaño aproximado aunque sí que ha habido ficheros varios megas más grandes en el mismo servidor. Lo inusual del error, el que no fuese un error de sintaxis del fichero me hacía sospechar de la configuración de MariaDB.
La solución
Hay que aumentar una variable del sistema que se encarga del tamaño máximo del buffer donde se almacenan los paquetes, max_allowed_packet
. Basta con añadir (o modificar) el valor y ponerlo a algo tremendo para que no falle, en este caso, 2 GB.
sudo sed -i '/max_allowed_packet/d' /etc/mysql/my.cnf
echo "max_allowed_packet = 2G" | sudo tee -a /etc/mysql/my.cnf
sudo /etc/init.d/mysql restart
Tras aplicar el cambio, ya se puede importar sin problema volcados de wordpress o de lo que sea.
$ mysql -h localhost -u user -pUltraSecurePass mydatabase < dump.sql
$