Error en el motor de la base de datos MySQL. El fallo proviene de una tabla corrupta en la propia base de datos. En mi caso, es un campo indice y primario duplicado.
Dos registros tienen el mismo numero de tema y eso ha corrompido la tabla. Es un error muy poco frecuente, menos en tablas mu muy grandes. En este caso es un foro con cientos de miles de mensajes)
Fallo en consultas Mysql detectadas por el CMS (
Dragonflycms) y reportadas por email a mi cuenta de correo.
Mensaje con el Error detectado:
Quote::
On /foros.php?p=764103
While executing query "SELECT u.username, u.user_id, u.user_posts, u.user_from, u.user_website, u.user_email, u.user_icq, u.user_aim, u.user_yim, u.user_regdate, u.user_msnm, u.user_viewemail, u.user_rank, u.user_sig, u.user_avatar, u.user_avatar_type, u.user_allowavatar, u.user_allowsmile, u.bio, u.user_timezone, u.user_occ, u.user_interests, p.*, pt.post_text, pt.post_subject FROM nuke_bbposts p, nuke_users u, nuke_bbposts_text pt
WHERE p.topic_id = 96333
AND pt.post_id = p.post_id
AND u.user_id = p.poster_id
ORDER BY p.post_time ASC
LIMIT 30, 15"
the following error occured: [b]Got error 134 from storage engine[/b]
Como se detecta:
Quote::
consulta SQL consulta SQL: CHECK TABLE `nuke_bbposts` , `nuke_bbposts_text` , `nuke_users`
Table Op Msg_type Msg_text
My_lv_new.nuke_bbposts check status OK
My_lv_new.nuke_bbposts_text check error Record-count is not ok; is 636735 Should be: 636...
My_lv_new.nuke_bbposts_text check warning Found 336 deleted space. Should be 0
My_lv_new.nuke_bbposts_text check warning Found 4 deleted blocks Should be: 0
my_lv_new.nuke_bbposts_text check error Corrupt
My_lv_new.nuke_users check status OK
Al hacer el chequeo de las tablas implicadas en la base de datos, detecta varios errores en my_lv_new.nuke_bbposts_text.
Solución, reparar la tabla. Esto se hace a través de phpMyadmin, cualquier otra erremienta de Mysqul o mediante el siguiente comando Mysql:
Quote::
REPAIR TABLE `nuke_bbposts_text`
Table Op Msg_type Msg_text
My_lv_new.nuke_bbposts_text repair warning Number of rows changed from 636736 to 636735
My_lv_new.nuke_bbposts_text repair status OK
En este caso se borra el registro duplicado.
NOTA: si esta operación se hace durante un momento de alto trafico, el resultado puede ser numerosos errores mientras se esta haciendo la reparación de la tabla, pues lo primero que se hace es marcarla como corrupta y prohibir el acceso a ella.
El error en este caso es:
Quote::
the following error occured: Table './my_lv_new/nuke_bbposts_text' is marked as crashed and should be repaired
Pero este error debe dejar de salir cuando se repara la tabla.