Error en MySQL

Hola, espero que me puedas ayudar. Tengo una página web en servidor linux, con el foro phpbb. Desde hace unos días, aparece un error al intentar acceder, error que creo que viene de la base de datos:
SQL Error : 1016 Can't open file: 'phpbb_topics.MYD'. (errno: 144)
Si es un error de la base de datos (hubo un apagón de luz un sábado), ¿cómo puedo recuperarme de este fallo? Existe algún comando tipo REPAIR TABLE que pueda utilizarse para reparar la base de datos, ¿o bien la tabla?
Además del error 1016, también sale (a veces) el error 1034, por si sirve para completar la información.
La verdad es que estoy un poquito desesperado con esto.
Un saludo,
Emilio.

2 respuestas

Respuesta
1
El error puede ser recuperable.
Me has comentado que tienes linux, bien...
Haz lo siguiente:
# mysql -h localhost -u root -pCLAVEDEROOT phpbb
Con esto inicias sesión en el servidor mysql, usando la base de datos phpbb.
La clave de root tienes que introducirla junto a la opción -p, es decir sin espacio no es una errata.
Una vez dentro haz:
repair table phpbb_topics;
Despues y dentro del servidor mysql ejecuta:
myisamchk -r phpbb_topics;
Si no muestra errores, sal del servidor mysql.
Ves al directorio mysql donde guarda las tablas y comprueba los permisos usuario-grupo root:mysql.
Reinicia el demonio mysql ( en debían sería...
# /etc/init.d/mysql restart
Comprueba si ya no da errores.
Si no te funciona, prueba a echarle un vistazo a las distintas opciones del repair table.
http://dev.mysql.com/doc/refman/5.0/en/repair.html
PD: Y por supuesto, en ultimo recursos, ¿tienes la copia de seguridad obligatoria no? :P
Espero haberte ayudado, si no es así, intenta no hacer nada con el mysql y me cuentas para intentar recuperarlo de otras maneras.
Respuesta
1
Este mensaje y dime si te sirve:
http://www.phpbb.com/phpBB/viewtopic.php?t=259967
Hola, gracias por el interés. He copiado el script tal y como explica, pero en la ventana del navegador me aparece:
Warning: Failed opening '/home/aloweb/augcorg/public_html//foro/fixtables.php' for inclusion (include_path='.:/usr/share/php') in Unknown on line 0
Es decir que falla por alguna mala configuración. ¿Me puedes ayudar?
Gracias,
Emilio
He estado revisando el script para solucionar el error en phpBB y mira:
include($phpbb_root_path . 'config.php');
...
mysql_select_db($dbname,$db);
Si te das cuenta lo que hace es lo común que deben tener casi todos los scripts del Foro, incluir el fichero de configuración "config.php" en donde se hayan las variables y seleccionar la BD que tienes en la variable $dbname lo que me hace pensar que si tienes este script configurado no debe darte ningún tipo de error.
Por lo otro de las consultas en la linea de comandos, primero decir que "myisamchk" solo funciona con tablas de tipo MyISAM por lo que si tus tablas son InnoDB no funcionaría y si la sintaxis esta correcta pero deberías probar lo siguiente:
myisamchk --silent --force --fast --update-state \ --key_buffer_size=64M -sort_buffer_size=64M \ --read_buffer_size=1M --write_buffer_size=1M \ /path/to/datadir/*/*.MYI
que lo que hace es reparar todas las tablas MyISAM que se encuentren en ese directorio "path/to/datadir". La referencia la tome desde: http://dev.mysql.com/doc/refman/5.0/en/myisamchk.html por si quieres buscar más información.
Estuve leyendo también y mira lo que dicen:
1) Ejecutar myisamchk cuando MySQL no este corriendo.
2) Ejecutar primero CHECK TABLES y luego REPAIR TABLE cuando MySQL este corriendo.
La referencia está aquí por si lo necesitas: http://dev.mysql.com/doc/refman/5.0/en/corrupted-myisam-tables.html
Hola, el script no funciona porque parece que debe ejecutarse en la database "foro_augcorg". Desde línea de comandos sí que he logrado arreglar una tabla que falla, aunque me gustaría que se pudiera ejecutar el script, así lo podría lanzar desde casa incluso :) ¿Se te ocurre donde modificarlo?
Otra cosa, aún me quedan dos tablas que no puede arreglar con REPAIR_TABLE (error 28 "can't change size of indezfile"). Son las tablas phpbb_posts_text y phpbb_search_wordmatch. Intento el comando:
myisamchk -r -q <nombretabla>;
y me dice:
error 1064: you have an error in your syntax near....
Lo mismo cuando ejecuto:
repair table <nombretabla> USE_FRM;
¿Qué pasa? ¿Desde dónde se ejecutan estos comandos? Lo he repasado mil veces y no tengo errores de sintaxis, parece como si ejecutara un comando que desconoce.
Entro como root, y luego cambio la database con el comando USE <database>.
¿Se te ocurre algo? Muchas gracias,
Emilio.
No se si esto tenga algo que ver pero es el unico problema que veo ahi es la direccion: /home/aloweb/augcorg/public_html//foro/fixtables.php
pues no se si viste los "//". Como sabes Linux es case sensitive y muy persuasivo con esas cosillas. Arréglalo y dime si es ello.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas