Este problema ocurre cuando se definió una Primary Key o una Foreign Key y su índice no se encuentra, no existe. Y debería existir. Para descubrir cual es el índice faltante puedes escribir la siguiente consulta:

SELECT
   I.RDB$RELATION_NAME   AS "Nombre de la Tabla",
   R.RDB$CONSTRAINT_NAME AS "Nombre de la restricción",
   R.RDB$INDEX_NAME      AS "Nombre del índice",
   I.RDB$INDEX_NAME      AS "Nombre real",
   I.RDB$INDEX_INACTIVE  AS "Estado"
FROM
   RDB$INDICES I
RIGHT JOIN
   RDB$RELATION_CONSTRAINTS R
      ON I.RDB$INDEX_NAME = R.RDB$INDEX_NAME
WHERE
   R.RDB$CONSTRAINT_TYPE = 'PRIMARY KEY' OR
   R.RDB$CONSTRAINT_TYPE = 'FOREIGN KEY'
ORDER BY
   R.RDB$CONSTRAINT_NAME

El índice faltante es aquel que en la columna “Nombre real” está vacío. Para solucionar el problema debes recrear esa restricción.

En general este error ocurre cuando hay corrupción física en la Base de Datos. Sería una buena idea que hagas un backup, que restaures el backup, y que de ahí en adelante utilices la versión restaurada.

NOTA: En la columna “Estado” el valor 0 (cero) significa que el índice está ACTIVO, un valor de 1 significa que el índice está INACTIVO y un valor de NULL significa que es un nuevo índice.

 

Anuncios