Jun
19
2009
Error duplicate entry en jos_session Imprimir Correo electrónico
( 1 Voto )
Escrito por carcam   

Imagen del logotipo de Joomla! partido por la mitad A 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.

 

Escribir un comentario

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.


Código de seguridad
Refescar