Erro estranho no Firebird 1.5, Foreign Key

Firebird

02/08/2005

Olá, tenho uma tabela Conta_Receber, e nela eu coloquei dois campos FK, Cliente e Representante...

Pois bem, quando eu vou incluir um registro no Conta_Receber, e insiro os codigos do Cliente e/ou Representante ele me da o seguinte erro
[b:5eeec71bc3]
Unsuccessful execution caused by a system error that precludes
successful execution of subsequent statements.
internal gds software consistency check (can´t continue after bugcheck).[/b:5eeec71bc3]

Os registros existem no Cliente e no Representante... o que pode ser?

segue o DDL da minha tabela:
CREATE TABLE CONTA_RECEBER (
    IDCONTA_RECEBER    INTEGER NOT NULL,
    DATA_VENDA         DATE,
    VALOR_VENDA        D_DINHEIRO /* D_DINHEIRO = DECIMAL(9,2) DEFAULT 0.00 */,
    IDVENCIMENTO       INTEGER,
    DATA_ENTRADA       DATE,
    VALOR_ENTRADA      D_DINHEIRO /* D_DINHEIRO = DECIMAL(9,2) DEFAULT 0.00 */,
    IDCLIENTE          INTEGER,
    IDREPRESENTANTE    INTEGER,
    OBS                D_OBS /* D_OBS = BLOB SUB_TYPE 1 SEGMENT SIZE 80 */,
    COMISSAO_VENDEDOR  DECIMAL(9,2),
    PRIMEIRA_VENDA     SMALLINT,
    COMISSAO_EXTRA     DECIMAL(9,2),
    IDPEDIDO           INTEGER,
    STATUS             CHAR(2)
);



ALTER TABLE CONTA_RECEBER ADD CONSTRAINT PK_CONTA_RECEBER PRIMARY KEY (IDCONTA_RECEBER);



ALTER TABLE CONTA_RECEBER ADD CONSTRAINT FK_CONTA_RECEBER_1 FOREIGN KEY (IDVENCIMENTO) REFERENCES VENCIMENTO_PARCELA (IDVENCIMENTO);
ALTER TABLE CONTA_RECEBER ADD CONSTRAINT FK_CONTA_RECEBER_2 FOREIGN KEY (IDCLIENTE) REFERENCES CLIENTE (IDCLIENTE);
ALTER TABLE CONTA_RECEBER ADD CONSTRAINT FK_CONTA_RECEBER_3 FOREIGN KEY (IDREPRESENTANTE) REFERENCES REPRESENTANTE (IDREPRESENTANTE);





Desde já agradeço


Fellipe H.


Titanius

Titanius

Curtidas 0

Respostas

Fsflorencio

Fsflorencio

02/08/2005

Acho que seu banco tá corrompido.

passa um gfix depois faça um backup e restore que deve resolver.


GOSTEI 0
Titanius

Titanius

02/08/2005

Amigo, não deu certo não... o gfix, não me mostrou nenhum erro... :-( mas mesmo assim, ainda passei o gfix e o gbak e nada... :(



Algo mais?


[]s


GOSTEI 0
Fsflorencio

Fsflorencio

02/08/2005

Por acaso foi instalada alguma versão do interbase por cima do firebird ou vice-versa? Pode ser que esteja com o gds32.dll errado. Tente reinstalar removendo os arquivos que porventura estejam sobrando, inclusive os gbak e os gfix que estiverem espalhados.


GOSTEI 0
Titanius

Titanius

02/08/2005

Eu não instalei... :(, descobri que este erro eh por que deu algum problema nos indices primarios e estrangeiros, ou seja, houve corrupção de informação, por problema fisico ou bug do servidor firebird... muito estranho isso... ele fala pra usar este SQL:
select R.RDB$CONSTRAINT_NAME, R.RDB$INDEX_NAME as REFINDEXNAME, I.RDB$INDEX_NAME as REALINDEX, I.RDB$RELATION_NAME, I.RDB$INDEX_INACTIVE 
from RDB$INDICES I RIGHT JOIN RDB$RELATION_CONSTRAINTS R on I.RDB$INDEX_NAME = R.RDB$INDEX_NAME 
where R.RDB$CONSTRAINT_TYPE = ´FOREIGN KEY´ or R.RDB$CONSTRAINT_TYPE = ´PRIMARY KEY´ 
order by R.RDB$CONSTRAINT_NAME 

assim, o que estiver em branco na coluna REALINDEX, está corrompido, o problema, é que no meu não aparece nada em branco tudo certinho..

Estou maluco, será que vou ter q refazer todos os indices?


[]s


GOSTEI 0
POSTAR