.png)
Después de lograr actualizar mi servidor virtual Debian de etch a lenny. (Lea aquí la historia completa:debian: falla la actualización de etch a lenny)
Ahora perdí los datos (incluidas todas las tablas) de mi base de datos MySQL. Los archivos todavía están presentes en el disco duro y phpMyAdmin (denominado en adelante PMA) todavía me muestra todos los nombres de las bases de datos, pero sin tablas. Las bases de datos 'mysql' e ''information_schema' todavía tienen sus tablas. Pero acceder, por ejemplo, a 'mysql.user' me da el siguiente error:
#1017 - Can't find file: './mysql/user.frm' (errno: 13)
Por supuesto (como cualquier1337 PEBKAClo hace) No tengo un archivo de volcado de MySQL. (usando la palabra F varias veces)
¿Alguien conoce una herramienta que pueda restaurar los datos perdidos de la estructura del archivo?
Gracias de antemano por cualquier ayuda brindada para ese problema de capa 8, también conocido como yo.
Respuesta1
SI tiene los archivos, debería poder ver los datos (excepto las tablas innodb). Este error se produce comúnmente cuando tiene un problema de permisos; intente cambiar los archivos /var/lib/mysql a mysql:mysql y vea si se soluciona.
chown -R mysql:mysql /var/lib/mysql
Respuesta2
Lo primero es lo primero: que no cunda el pánico. Lo más probable es que no todo esté perdido, sólo hay que descubrir qué pasó.
¿Cambió la ruta del directorio de datos de MySQL durante la actualización? (No lo creo; si mi memoria no me falla, tanto Etch como Lenny publican cosas desde /var/lib/mysql de forma predeterminada. Pero si previamente cambiaste la ruta a mano, entonces algo podría haber sucedido)
Si accede a su cd /var/lib/mysql, ¿puede encontrar el directorio?MySQLy el archivousuario.frm¿bajo ello? Si no puedes, ¿
find / -iname 'user.frm'
devuelve algo?¿Hay algo digno de mención en/var/registro, especialmente bajo/var/log/mysql?
Si todo lo demás falla, configure otra instalación de Debian en otra computadora (o una máquina virtual), instale Debian Etch allí, copie su directorio de datos MySQL allí y vea si funciona. Luego ejecute un adecuadomysqldumpy devuélvelo a tu nuevo Lenny.
EDITAR:Ok, esto fue solo una cuestión de permiso. De todos modos dejaré mi respuesta aquí por si le sirve a alguien más.
Respuesta3
Bueno, un par de cosas:
Primero, haga una copia de seguridad de los archivos que tiene actualmente. Algunas de las operaciones pueden realizar modificaciones, por lo que no querrás estar peor que ahora.
Asumiré que su directorio de datos actual tiene un mysql/user.frm
archivo. Si ese es el caso, el problema es que la nueva versión de MySQL está buscando sus datos en el lugar equivocado. Revisar ladocumentación sobremy.cnf
, específicamente la parte sobre DATADIR
. Puede cambiar el directorio de datos predeterminado para que apunte a su conjunto de archivos anterior. Una vez que haga eso, querrá ejecutar el comando mysql_upgrade
para verificar sus tablas y actualizar cualquiera de las estructuras de las tablas. Ver la documentación.
Si no hay ningún mysql/user.frm
archivo en su directorio de datos, entonces algo salió mal. Deberá completar manualmente la instalación nuevamente (no reinstalar, solo los pasos posteriores a la instalación). Para hacer esto, ejecute el programa.mysql_install_db
. Eso debería restaurar las tablas de usuarios. Tenga en cuenta que perderá toda la información de autenticación (dado que ya desapareció porque user.frm no existe).
Lo dejaré así por ahora considerando que hasta que elijas una de esas rutas, no puedo ayudarte más. Déjame saber cuál eliges e intentaré seguir ayudando lo mejor que pueda.
Respuesta4
Estos son archivos de índice que se pueden generar.reparación de mysql
Haga una copia de seguridad de los archivos mysql y en phpmyadmin ingrese la consulta:
REPAIR TABLE tbl_name [, tbl_name] USE_FRM;
MySQL lo reparará.