Firebird - 数据库文件关闭错误消息

8
我有一个关于Firebird数据库的问题。其中一张表的主键被另一张表引用,而这张表早已被删除。因此,来自不存在的表的引用导致在我尝试更改表数据时出现错误。

因此,我进行了备份和恢复,不良引用已经消失,但是现在当我尝试同时连接到我的数据库超过一次时,会出现以下错误:

database [文件路径] 关闭

我该怎么解决呢?


外键约束所在的表被删除了吗?如果是,那不应该会导致问题;还是主键所在的表被删除了?如果是,那本来是不可能的。 - Mark Rotteveel
@MarkRotteveel,我不太明白你的意思,但我会尝试删除并重新创建带有孤立引用的表,我认为这样可以解决问题。 - zac
这是一个问题:根据您的描述,我无法确定哪个表被删除了(包含外键的表还是包含主键的表)。但无论如何,这不应该引起问题,如果确实出现问题,则可能指向Firebird中的一个错误。 - Mark Rotteveel
含有外键的那个表已被删除,对另一个表进行的任何编辑都会导致“BLR”错误。我会尽快回复您。 - zac
2个回答

13

除了那个解决方案,我还需要提取SQL,删除孤立的引用并重新创建数据库...谢谢Mark。 - zac
如果数据库包含名称为“SYSDBA”的角色并阻止SYSDBA登录,是否有相同的方法来执行此操作?通常我必须使用所有者用户,但如果数据库关闭,则需要SYSDBA... - Honza
@Honza 我所知道的另一种选择是数据库所有者(如果不是SYSDBA),据我所知,gfix不支持RDB$ADMIN角色。 - Mark Rotteveel
2
更新:我已经找到解决方案了:gfix -online需要SYSDBA 或者 关闭数据库的用户 - 如果我将数据库恢复为用户test(例如),用户test也可以使用gfix -online :) 谢谢 - Honza

1
使用在线
gfix  -user "SYSDBA" -password "masterkey"  -online DATA.FDB

数据库使用后重试

gfix  -user "SYSDBA" -password "masterkey"   -shut -force 0 DATA.FDB

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接