En las últimas horas me he percatado que en las páginas de este mismo blog en donde se muestran comentarios ponía, en lugar de estos, un mensaje de error que citaba:
WordPress database error: [Table './AAA/wp_comments' is marked as crashed and last (automatic?) repair failed]
SELECT * FROM wp_comments WHERE comment_post_ID = ‘XXX’ AND comment_approved = ‘1′ ORDER BY comment_date
En donde AAA es el nombre de la tabla que contiene la tabla corrupta y XXX es el id del post que en ese momento se está viendo.
Tras buscar en google “how to repair crashed table” encontré este enlace del faq de mysql en donde de forma extensa explican como se puede tratar de recuperar una tabla según su error.
Para comprobar el tipo de error que hay en la tabla, hay que ejecutar myisamchk de la siguiente forma (haste este punto no es necesario parar el demonio mysqld):
root@host:~# cd [path]
root@host:/[path]# myisamchk wp_comments.MYI
En donde [path] es la ruta de nuestras tablas (normalmente /var/lib/mysql/databasename). Esta ha sido la salida del programa myisamchk:
Checking MyISAM file: /[path]/wp_comments.MYI
Data records: 150 Deleted blocks: 0
myisamchk: warning: Table is marked as crashed and last repair failed
myisamchk: warning: 1 client is using or hasn’t closed the table properly
- check file-size
- check record delete-chain
- check key delete-chain
- check index reference
- check data record references index: 1
- check data record references index: 2
- check data record references index: 3
myisamchk: error: Found 151 keys of 150
- check record links
myisamchk: error: Record-count is not ok; is 151 Should be: 150
myisamchk: warning: Found 151 parts Should be: 150 parts
MyISAM-table ‘/chroot/mysql/var/lib/mysql/myblog/wp_comments.MYI’ is corrupted
Fix it using switch “-r” or “-o”
Al parecer (no acabo de comprender de que manera) habia una entrada mas en la tabla de las que el contator tiene marcadas (hay 151, el contador marca 150). Para arreglarlo ha sido tan sencillo como parar el demonio mysqld (importante !!) y:
root@host:/[path]# myisamchk -r -q wp_comments.MYI
La opcion -r significa repair y la opción -q quick, por lo que myisamchk tratará de hacer un recovery rápido de la tabla. En mi caso ha sido suficiente con esto y ya ha vuelto a funcionar la tabla adecuadamente:
root@host:/[path]# myisamchk wp_comments.MYI
Checking MyISAM file: wp_comments.MYI
Data records: 151 Deleted blocks: 0
- check file-size
- check record delete-chain
- check key delete-chain
- check index reference
- check data record references index: 1
- check data record references index: 2
- check data record references index: 3
- check record links
En cambio, si las opciones -r -q no hubiesen sido suficientes, habría que ejecutar myisamchk solo con la opción -r.
Para los despistados, una vez recuperada(s) la(s) tablas(s) corrupta(s) se vuelve a poner en marcha el demonio mysqld y a correr.
Ahora mismo ya funcionan los comentarios y podeis dejar uno mas abajo :D