Campo ID, siguiente al último dañado, siempre pone 1


([N1] anton) #1

Hola a todos,

Tengo el siguiente problema,

En días pasados el disco duro de un servidor se llenó (no me pregunten las causas, yo no administro ese servidor =)), en ese servidor tengo una aplicación en Velneo V7.

A raíz de la saturación del disco, la aplicación V7 comenzó a tener un comportamiento erróneo, después de revisar en conjunto con el administrador del servidor y encontrar que el disco no tenia espacio, se corrigío dicho problema y en cuando a la aplicación V7, se ejecutó una reconstrucción de áreas de datos y regeneración de índices, aparentemente todo se resolvio y la aplicación siguió funcionando.

En días pasados me notificaron que no funcionaban algunas consultas, que siempre les devolvía 0 registros.

Al revisar con el vDataClient la tabla involucrada, me dí cuenta que hasta la fecha y hora previa al llenado del disco todos los IDs de la tabla funcionaban perfecto, pero a raiz de la falla a todos los nuevos registros que se crean el ID ya no se autoincrementa, sino que a todos les pone un 1.

Ningúno de los campos restantes de la tabla tiene afectación aparente, fechas, horas, minutos, etc, todo está grabado perfectamente.

Diseñáré un proceso que reconstruya los ID, toda vez que puedo ordenar por fecha y horas los registros y puedo continuar a partir del último registro creado correctamente, a menos que alguien con alguna experiencia previa me indique lo contrario.

¿A alguien más le había ocurrido este problema?

El campo es un ID normalito, siguiente al último con longitud 4.

He ejecutado ya varias veces regeneración de datos e índices de la tabla pero sigue sin detectar error, y lo peor, el índice es de clave única y el vAdmín no detecta el error y permite las altas sin avisar de ningún conflicto.

Me gustaría conocer sus comentarios, gracias.

Anton.


([N4] Infortic) #2

Yo borraría el fichero de índices para obligarle a regenerarlo.

Además alternaría el valor entre “No” y “Siguiente al último” reniciando la instancia en cada cambio para probar.

Y le daría un byte más de longitud al id para obligarle a regenerar ese campo.

Otra cosa no se me ocurre así de primeras.


([N2] ramiro) #3

Buenas:

Si existen ID’s repetidos, la regeneración de índices no puede ayudar puesto que simplemente ocultará esos registros en el índice único por ID

Tienes que cargar todos los registros por un índice que admita repeticiones, ordenar por fecha y hora y modificar el campo ID con valor 1 por un valor siguiente al último de los usados (y de los que uses en el proceso de corrección). De esa forma los registros volverán a estar incluídos en el índice de clave única y, posiblemente, todo volverá a la normalidad.

Saludos. Ramiro


([N3] pacosatu) #4

Hola Anton.

Si la tabla afectada tiene plurales tendrás que comprobar también dichas tablas para que apunten a los maestros correctos.

En todo caso, ponte en contacto con Soporte de Velneo para que documenten este caso y puedan reproducir en laboratorio qué le pasa al vServer cuando se queda sin espacio en disco. Quizás puedan anticiparlo en el futuro para que por lo menos no haya pérdida de datos.

Hay que determinar si se ha visto afectado vServer por no tener espacio la carpeta de datos o porque no haya podido crear el fichero de transacciones de la subcarpeta trn del vServer.

Saludos
Paco Satué