Error duplicate entry en jos_session

Escrito por Carlos M. Cámara.

Imagen del logotipo de Joomla! partido por la mitadA lo largo del día de ayer tuvimos un problema con nuestro sitio y estuvimos offline la mayor parte del tiempo. En un principio se lo achacamos a un problema de conexión con el servidor, pero al comprobar que las herramientas del hosting funcionaban correctamente nos pusimos a ver qué le pasaba a Joomla!

Así pues el error que nos arrojaba la base de datos decía algo parecido a:

Duplicate entry '1-' for key 2 SQL=INSERT INTO jos_session

Este tipo de errores son de los que nos ponen los pelos de punta normalmente, porque en un principio nos resultan bastante aleatorios y de entrada uno sospecha que no se va a solucionar eliminando el último componente instalado.

Este error se produce porque se corrompe la tabla que almacena la sesión de los usuarios y se duplica un índice clave. Estos errores son poco frecuentes, y se originan por el uso del gestor. Obviamente, al ser un error aleatorio cuando mayor sea nuestro sitio y más visitas y usuarios tengamos, mayor es la probabilidad tendremos de sufrirlo.

Antes de hacer ninguno de estos pasos asegúrate de tener una copia de seguridad de tu sistema con la que puedas recuperar los datos en caso de fallo.

La solución al problema pasa por reparar la tabla jos_session para eliminar la duplicidad. Afortunadamente es una tarea muy sencilla que podremos acometer de varias formas:

  • Si nuestro servidor nos provee de phpMyAdmin, tan sólo tendremos que acceder a nuestra base de datos, a la tabla jos_session y ponernos en la pestaña Operaciones.

Captura de pantalla de phpMyAdmin situado en la tabla jos_session y con la opción Reparar marcada con un círculo.

  • Al final de la página encontraremos el enlace a Reparar Tabla.

Imagen de las operaciones que se pueden hacer en una tabla con phpMyAdmin

  • Si nuestro servidor no nos ofrece phpMyAdmin, sino que tenemos que ejecutar los comandos SQL directamente, tan sólo tendremos que acceder a MySQL y teclear:
mysql> use databasename;
mysql> REPAIR TABLE jos_session; 

Donde databasename se corresponde con el nombre de vuestra base de datos.

De esta forma ya tendréis reparada la base y podréis acceder de nuevo al sitio. Si estos pasos no funcionaran, entonces la opción para recuperar vuestro sitio pasaría por eliminar la tabla jos_session y volver a crearla según la definición de vuestra versión de Joomla!. Lo más sencillo en este caso es hacer una instalación limpia de manera local de la versión de Joomla! que estéis usando y copiar los parámetros de la tabla jos_session en vuestra base de datos corrupta.

Sobre el autor
Carlos M. Cámara
Author: Carlos M. Cámara

Me apasiona el desarrollo web y trabajar para conseguir una web que cumpla con sus visitantes y sus propietarios y siempre estoy dispuesto a trabajar en proyectos interesantes. Mi especialidad es resolver problemas ;o).

Trabajo con Joomla! desde sus inicios y desde 2010 colaboro activamente con JEvents ayudando a otros usuarios a poder comunicar sus eventos y desarrollando partes del componente.

Contactar


Comentarios  

 
0 #1 Mecanica automotriz 08-03-2011 14:03
Alguien sabe porque este error se produce de manera repetitiva especialmente en webs grandes como la mia que tiene unos 300k usuarios y unas 12k visitas diarias.
Citar
 
 
0 #2 Isidro Baquero 08-03-2011 14:20
Mientras más actividad tenga tu sitio, más accesos a la base de datos, y más probabilidades de que algún índice se corrompa.

Puedes usar extensiones que te optimizan las tablas de manera automática periódicamente, como por ejemplo el plugin OptimizeTables, que seguramente ayudarán a reducir la cantidad de veces que se produce un error que requiere una reparación manual.
Citar
 
 
0 #3 Jose 24-08-2012 17:34
Excelente tutorial... me salvaste el dolorcito de cabeza... felicitaciones por este sitio web.

Saludos desde Guayaquil Ecuador.
Citar
 

Escribir un comentario

REGLAS APLICABLES A LOS MENSAJES
  • Los comentarios serán publicados una vez que hayan sido comprobados y aprobados por un administrador del sitio.
  • No están permitidos comentarios injuriosos o amenazadores.
  • No está permitido hacer spam.
  • Los enlaces que no vayan a sitios oficiales Joomla! o que no estén relacionados con el mensaje serán editados.