Una vez al año pasa lo siguiente sobre un aplicativo que tiene muchos accesos de usuarios
“Se ha producido una violación de …”
En el log del servidor tira el siguiente mensaje “ERROR: duplicate key violates unique constraint “apex_ses_brw_pk”
Solución
El procedimiento con el cual se solucionó el problema la última vez fue borrar los registros de la tabla apex_sesion_browser (tabla de la instancia de desarrollo de toba)
puede que hayan llegado al limite de las secuencias de postgres y eso haga que al “reiniciarse” intente volver a escribir el mismo ID.
Otra opcion, es que mientras se este usando, se este regenerando el sistema y la secuencia quede detras del valor en que deberia quedar, seria un caso muy border… pero puede pasar.
En cualquier caso, lo primero que te recomendaria cuando sucede eso es lo siguiente:
Intentar actualizar las secuencias via el comando toba base actualizar_secuencias para intentar resolver un posible retraso.
Verificar la cantidad de registros que tiene la tabla en cuestion, a menos que tenga mas de 2^31 registros… no deberia estar ni cerca de los limites de la secuencia, salvo que contenga muchos “saltos”, que no deberia ser el caso para esa tabla justamente.
Si la tabla tuviera toda esa cantidad de registros… ejecutar toba instalacion eliminar_logs para eliminar los registros de todas las tablas de logs y no solo de esa, sino luego va a saltar alguna otra.
Tene en cuenta que esa info puede ser valiosa por lo que no estaria mal que hicieran un backup de la bd antes, de modo de poder recuperarlo en caso que lo necesiten por auditoria.
La solucion seria cambiar el tipo de la columna de serial a bigserial para tener 2^63 registros… pero eso seguramente requiere rearmar la secuencia.