Error: MySQL shutdown unexpectedly

Vamos a ver la solución a un error común en MySQL: Error: MySQL shutdown unexpectedly

 

MySQL shutdown unexpectedly
 

Cuando recibimos el mensaje de :

error: cierre de mysql inesperadamente, después aparece la siguiente info que nos indica las posibles razones del error:

error MySQL shutdown unexpectedly


This may be due to a blocked port, missing dependencies, improper privileges, a crash, or a shutdown by another method.

Press the Logs button to view error logs.

 

CONTENIDOS EN ESTE ARTÍCULO:

 

 

Posibles razones del error “MySQL shutdown unexpectedly”

 

  • Hay otro programa utilizando el puerto de MySQL (puerto 3306).
  • No estamos ejecutando Xampp como Administrador.
  •  

  • *** El archivo ibdata está dando problemas: puede que el error de MySQL tenga que ver con el archivo ibdata1, que se encuentra en el directorio C:\xampp\mysql\data
    • *** En ese caso puede que recibamos el error: ibdata1 can’t be opened in read-write mode
  •  

  • Cualquier otro tipo de error en la instalación de Xampp (por ello comenzaremos haciendo un backup completo del directorio C:/Xampp, y una copia de seguridad de nuestras bases de datos).

 

 

Revisando los errores en los archivos de Log de MySQL

 
–> Lo primero que debemos hacer es revisar los logs de Xampp, disponibles en C:\xampp\mysql\data

–> Si no lo podemos encontrar, podemos utilizar el shell y realizar una búsqueda de los archivos de “log“.

1
mysql -u root -p

consola mysql xampp
 

–> Después realizamos la búsqueda de los posibles archivos de log de mysql en xampp:

1
mysql> show variables like '%log_file%';

buscar log mysql xampp
 

Activar los informes de log

 
–> También podemos activar los informes de log, que probablemente se encuentren desactivados por defecto.

1
SET GLOBAL general_log = 'ON';

 

–> Y seleccionar un archivo concreto en el que deseamos que mysql escriba los registros de log:

1
SET GLOBAL general_log_file = 'my_log.log';

 
 

–> Por último podemos ir al archivo my-default.ini (en la carpeta /bin), editarlo y guardarlo de nuevo como my.ini, que será el archivo de configuración general de mysql, y añadir lo siguiente:

1
2
3
 general_log = 'ON';
 
general_log_file = 'my_log.log';

 

 

Posibles Soluciones al error

 

–> SOLUCIÓN:  Ante este error realizaremos los pasos mencionados en el enlace y se solucionará el error.

 

  • –> Ante el error Fatal error: “Can’t open and lock privilege tables: Incorrect key file for table ‘user’; try to repair it“, mostrado en el siguiente archivo de log de mysql:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2014-9-22 11:17:25 5800 [Note] InnoDB: Database was not shutdown normally!
2014-9-22 11:17:25 5800 [Note] InnoDB: Database was not shutdown normally!
2014-9-22 11:17:25 5800 [Note] InnoDB: Starting crash recovery.
2014-9-22 11:17:25 5800 [Note] InnoDB: Reading tablespace information from the .ibd files...
2014-9-22 11:17:25 5800 [Note] InnoDB: Restoring possible half-written data pages
2014-9-22 11:17:25 5800 [Note] InnoDB: from the doublewrite buffer...
2014-9-22 11:17:25 5800 [Note] InnoDB: 128 rollback segment(s) are active.
2014-9-22 11:17:25 5800 [Note] InnoDB: Waiting for purge to start
2014-9-22 11:17:25 5800 [Note] InnoDB: 5.6.11 started; log sequence number 1957328
2014-9-22 11:17:26 5800 [Note] Server hostname (bind-address): '*'; port: 3306
2014-9-22 11:17:26 5800 [Note] IPv6 is available.
2014-9-22 11:17:26 5800 [Note] - '::' resolves to '::';
2014-9-22 11:17:26 5800 [Note] Server socket created on IP: '::'.
2014-9-22 11:17:26 5800 [ERROR] Fatal error: Can't open and lock privilege tables: Incorrect key file for table 'user'; try to repair it

 

SOLUCIÓN:
–> Hacer una copia de seguridad del archivo .cnf

–> Abrir el administrador de tareas o Taskmanager y matar el proceso mysqld.exe

–> Volver a iniciar el servicio de Mysql.

 

 

  • –> Otra posible solución: arreglar errores en el archivo my.ini

–> Vamos a Xampp/mysql/bin/my.ini

–> Lo abrimos y editamos, añadiendo la siguiente linea:

1
innodb_force_recovery = 1

 

 

  • –> Otra posible solución por errores en archivo .cnf y proceso mysqld:

– Hacer una copia de seguridad del archivo .cnf

– Abrir el administrador de tareas o Taskmanager y matar el proceso mysqld.exe

 

 

OTRAS Posibles soluciones a errores de MySQL en Xampp:

 

  •  También podemos comprobar otras aplicaciones corriendo en los puertos que necesitamos. Existe la posibilidad de que Skype interactue con Xampp y provoque errores. Apagar Skype y volver a reiniciar Xampp.
  • Cambiar el número de puerto en el que inicia el servicio de MySQL.
  • Iniciar Mysql y Apache pero no como servicios del sistema.
  • Vamos a Xampp/mysql/bin/my.ini
  • Lo abrimos y editamos, añadiendo la siguiente linea:
1
innodb_force_recovery = 1

 

 

 SI NO SE PUEDE RESOLVER EL ERROR:

 
– Si todo esto no funciona, finalmente, desinstalar Xampp, limpiar con ccleaner, reiniciar y volver a instalar.

Podemos probar con diferentes versiones de Xampp, el problema es que a lo mejor necesitamos una versión concreta de PHP para trabajar con nuestro proyecto, y cada versión de Xampp ofrece diferentes versiones de PHP, así que a lo mejor nos vemos en un brete y estamos condicionados a una versión concreta de Xampp.

En ese caso debemos ir solucionando los errores que nos aparezcan paso a paso.

 
De ahí la importancia fundamental de leer correctamente los logs de error en MySQL y PhpyAdmin.