Error: Clave duplicada

Hola a todos

Desde hace unos días tengo un mensaje en el vAdmin que dice:

Clave duplicada en subindice=25 de Z:/velneo/curso/documento.idx

La tabla DOCUMENTO sólo tiene un campo de clave única que es el campo #ID automático.

¿Alguien sabe cómo puedo saber donde está el error?

Gracias y un saludo

Gonzalo Torre

En teoría, si empiezas a contar los índices empezando por 0, el 25 es que te está dando problemas

Eso pensaba yo también, pero ese índice es un índice que acepta repetidas con dos partes. Yo guardo el usuario que ha modificado el documento y la hora a la que lo ha modificado. Luego tengo el indice con las dos partes para poder buscar los últimos documentos que ha modificado el usuario.

No entiendo por qué me dice que hay una clave duplicada en un índice que acepta repetidas.

Saludos

A mi también me ocurre. Y solo hay índice con clave única que es el ID

¿Pues ni idea, a mi me sale a veces cuando regenero índices.

Casi que me preocupa más el mensajito de “Función inexistente” por mucho que busco nada de nada. Yo creo que cuando cambias un campo y quizás los índices de tipo. Internamente las propiedades se mantienen y quizás de ahí vengan los errores.

¿En algún momento pusiste ese índice como clave única?

No, ese campo nunca ha sido de clave única. Hay otros que sí lo eran y los cambié, pero no este en concreto. He pasado consulta a soporte a ver si me dicen algo.

Un saludo

Gonzalo Torre

Hola.

Parece que es un error del vServer que están evaluando (con mucha calma) en Desarrollo.
En mi caso sucedió allá por el mes de Julio de 2014 (adjunto imágenes).

Después de analizarlo y a la espera de más noticias se concluyó lo siguiente:

  • El error solo se produce una vez, inmediatamente después de haber reiniciado la Aplicación. Es decir, las siguientes reconstrucciones de índices no producen error.
  • La indexación se realiza correctamente a pesar de este “supuestamente FALSO ERROR”.
  • Lo mismo ocurre con 20 registros que con 150.000 registros.
  • En mi caso se producía en una tabla con un Índice de Múltiples Claves, aunque no parece ser el motivo del fallo.

Saludos
Paco Satué

En la v7.8 v7.10 ya ocurria esto.

Aunque por el camino han ido mejorando los mensajes, ya se pidió hace el mismo tiempo o mas, que los mensajes de vAdmin fuesen mas explicitos.

EDITO: quise decir en la v7.10, perdón.

Mi caso es un poco más raro. Me ocurre en una tabla de cabeceras de pedidos.

Cuando añado, modifico o borro las líneas del pedido se actualizan datos de la cabecera. Eso hace que se disparen los triggers de modificación de la cabecera. En el trigger anterior a la modificación modifico dos campos MODIF_POR, que es el usuario que ha hecho la modificación y MODIF_TIM que es la fecha y la hora de modificación. Esto es para temas de auditoría y para localizar de forma rápida los últimos documentos que ha modificado un usuario.

El caso es que si añado o modifico líneas no da el mensaje. Si modifico directamente algún dato de la cabecera tampoco da el mensaje. Pero si borro una línea del pedido me salta el mensaje en el vAdmin de la clave duplicada. El error está al modificar esos dos campos MODIF_POR y MODIF_TIM, porque si comento esas líneas no da el mensaje.

En soporte me han dicho que pare el vServer, que borre el IDX, que vuelva a iniciar vServer y regenere los índices de esa tabla, pero sigue igual.

No se me ocurre lo que puede pasar.

Saludos

Gonzalo Torre

@gontorre, a lo mejor lo que te digo es una locura pero no pierdes nada.

  • Borra el índice
  • Ejecuta para que reconstruya o reinicia la instancia
  • Comprueba si todavía te devuelve el error
  • Vuelve a declarar el índice
  • Ejecuta para que reconstruya o reinicia la instancia
  • Comprueba si todavía te devuelve el error

Hola Gonzalo.

Si después de las pruebas indicadas por soporte y por Manuel todo sigue igual, yo lo consideraría como un Falso error del vServer.

Está claro que si el subíndice 25 de Z:/velneo/curso/documento.idx no es de clave única, ese error no tiene sentido.

Te repito que en soporte han reconocido este error porque lo han podido reproducir en algún caso concreto y lo están estudiando, o eso me dijeron hace unos meses.

Saludos
Paco satué