Vamos a ver la solución a un error común en MySQL: Error: 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:
- El error MySQL shutdown unexpectedly
- Posibles razones del error “MySQL shutdown unexpectedly“
- Revisando los errores en los archivos de Log de MySQL
- SOLUCIONES
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 |
–> Después realizamos la búsqueda de los posibles archivos de log de mysql en xampp:
1 | mysql> show variables like '%log_file%'; |
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
- –> *** Primero el error más frecuente: [ERROR] InnoDB: ibdata1 can’t be opened in read-write mode
–> 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.