
gbak: activating and creating deferred index RDB$FOREIGN66
gbak:cannot commit index RDB$FOREIGN66
gbak: ERROR:violation of FOREIGN KEY constraint "PKDOCUMENTS" on table "DOCUMENTS"
gbak: ERROR: Foreign key reference target does not exist
gbak: activating and creating deferred index RDB$FOREIGN67
gbak:cannot commit index RDB$FOREIGN67
gbak: ERROR:violation of FOREIGN KEY constraint "PKDOCUMENTS" on table "DOCUMENTS"
gbak: ERROR: Foreign key reference target does not exist
gbak: activating and creating deferred index RDB$FOREIGN50
..........
gbak: committing metadata
gbak:finishing, closing, and going home
gbak:Database is not online due to failure to activate one or more indices.
gbak:Run gfix -online to bring database online without active indices.
Индексы RDB$FOREIGN66 и RDB$FOREIGN67 принадлежат таблице DOCUMENTLINKS следующей структуры:
Код: Выделить всё
CREATE TABLE DOCUMENTLINKS (
DEBETDOC INTEGER NOT NULL,
CREDITDOC INTEGER NOT NULL,
LINKSUMMA DOUBLE PRECISION NOT NULL,
LINKTYPE SMALLINT NOT NULL
);
ALTER TABLE DOCUMENTLINKS ADD CONSTRAINT PKDOCUMENTLINKS PRIMARY KEY (DEBETDOC, CREDITDOC); /* RDB$PRIMARY10 */
ALTER TABLE DOCUMENTLINKS ADD FOREIGN KEY (DEBETDOC) REFERENCES DOCUMENTS (ID); /* это RDB$FOREIGN66 */
ALTER TABLE DOCUMENTLINKS ADD FOREIGN KEY (CREDITDOC) REFERENCES DOCUMENTS (ID); /* это RDB$FOREIGN67 */
Структура таблицы DOCUMENTS, на которую ссылаются внешние ключи:
Код: Выделить всё
CREATE TABLE DOCUMENTS (
ID INTEGER NOT NULL,
FIRM INTEGER NOT NULL,
OPERATIONDATE DATE NOT NULL,
KIND INTEGER NOT NULL,
TOTALSUM DOUBLE PRECISION DEFAULT 0 NOT NULL,
CURRENCY INTEGER NOT NULL,
CURRRATE DOUBLE PRECISION,
PARTNER INTEGER NOT NULL,
AGENT INTEGER NOT NULL,
STOCK INTEGER NOT NULL,
IMPORTED_ID INTEGER DEFAULT 0 NOT NULL,
FLAG INTEGER DEFAULT 0 NOT NULL,
DOCTYPE INTEGER NOT NULL,
DOCNUMBER VARCHAR(10) NOT NULL COLLATE PXW_CYRL,
DOCDATE DATE NOT NULL,
DOCCURRENCY INTEGER NOT NULL,
DOCCURRRATE DOUBLE PRECISION,
PREV_DOCTYPE INTEGER,
PREV_DOCNUMBER VARCHAR(10) COLLATE PXW_CYRL,
PREV_DOCDATE DATE,
EXPECTEDDATE DATE NOT NULL,
SCHEME SMALLINT default 0 NOT NULL,
CONTRACT INTEGER default 0 NOT NULL,
REALDOCTYPE INTEGER NOT NULL
);
ALTER TABLE DOCUMENTS ADD CONSTRAINT PKDOCUMENTS PRIMARY KEY (ID);
/******************************************************************************/
/*** Foreign Keys ***/
/******************************************************************************/
ALTER TABLE DOCUMENTS ADD CONSTRAINT FKDOC_TYPE FOREIGN KEY (REALDOCTYPE) REFERENCES T$DOCUMENT_TYPES (ID);
ALTER TABLE DOCUMENTS ADD FOREIGN KEY (DOCTYPE) REFERENCES T$DOCUMENT_TYPES (ID);
ALTER TABLE DOCUMENTS ADD FOREIGN KEY (KIND) REFERENCES T$KINDS (ID);
ALTER TABLE DOCUMENTS ADD FOREIGN KEY (CURRENCY) REFERENCES CURRENCIES (ID);
ALTER TABLE DOCUMENTS ADD FOREIGN KEY (PARTNER) REFERENCES PARTNERS (ID);
ALTER TABLE DOCUMENTS ADD FOREIGN KEY (AGENT) REFERENCES PARTNERS (ID);
ALTER TABLE DOCUMENTS ADD FOREIGN KEY (FIRM) REFERENCES PARTNERS (ID);
ALTER TABLE DOCUMENTS ADD FOREIGN KEY (STOCK) REFERENCES PARTNERS (ID);
/******************************************************************************/
/*** Indices ***/
/******************************************************************************/
CREATE INDEX DOCUMENTS_IDX_BROWSE ON DOCUMENTS (DOCTYPE, DOCDATE);
CREATE INDEX ELDOC_BROWSE ON DOCUMENTS (PREV_DOCDATE, REALDOCTYPE);
CREATE INDEX IDOCNUMBER ON DOCUMENTS (DOCNUMBER);
CREATE DESCENDING INDEX IXDOCUMENTS_BROWSE ON DOCUMENTS (OPERATIONDATE, DOCTYPE);
Или у меня просто дубли в поле ID таблицы DOCUMENTS? Так там вроде уникальный primary key по этому полю.