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

Posted

技术标签:

【中文标题】Firebird - 数据库文件关闭错误消息【英文标题】:Firebird - database file shutdown error message 【发布时间】:2013-01-31 01:40:56 【问题描述】:

我的 Firebird 数据库有问题。其中一个表的主键被之前实际删除的另一个表引用。因此,当我尝试对表数据进行任何更改时,来自不存在的表的此引用会导致错误。

所以我做了备份和恢复,错误的引用消失了,但是现在当我尝试同时多次连接到我的数据库时,我收到以下错误:

数据库[文件路径]关闭

我该如何解决这个问题?

【问题讨论】:

是否删除了带有外键的表:如果是,那应该不会导致问题,或者是否删除了带有主键的表:是这样,这不应该是可能的。 @MarkRotteveel 我不太明白你的意思,但我会尝试删除并重新创建带有孤儿引用的表,我认为这会解决它。 这是一个问题:从您的描述中我无法判断删除了哪个表(包含外键的表或包含主键的表)。但无论如何:这不应该引起问题,如果出现问题,它可能指向 Firebird 中的错误。 删除了包含外键的表,对另一表的任何编辑都会导致“BLR”错误。我会尽力回复你。 【参考方案1】:

您的数据库(文件,而不是服务器)已关闭,因此 Firebird 不接受此数据库的连接,直到它再次使用 gfix 联机。

命令是:

gfix -online <path-to-your-database>

在Firebird Database Housekeeping Utility manual 中查看Database Startup and Shutdown

【讨论】:

除了该解决方案之外,我还必须提取 SQL,删除孤立引用并再次创建数据库....谢谢 Mark 如果数据库通过包含名称为“SYSDBA”的角色来阻止 SYSDBA 登录,是否有相同的方法?通常我必须使用所有者用户,但如果数据库关闭,则需要 SYSDBA... @Honza 我知道的唯一其他选项是数据库所有者(如果不是 SYSDBA),据我所知 gfix 不支持 RDB$ADMIN 角色。 更新: 我已经建立了解决方案:gfix -online 需要 SYSDBA OR 关闭数据库的用户 - 如果我以用户 @987654327 的身份恢复数据库@(例如),用户test 也可以gfix -online :) 谢谢【参考方案2】:

在线使用

gfix  -user "SYSDBA" -password "masterkey"  -online DATA.FDB

使用数据库后重试

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

【讨论】:

以上是关于Firebird - 数据库文件关闭错误消息的主要内容,如果未能解决你的问题,请参考以下文章

Postgres vs Firebird [关闭]

Firebird x Windows 7 x gds32.dll 错误

firebird 数据库恢复 firebird数据库修复 interbase数据库恢复 firebird blob错误恢复

如何将 Excel 或 CSV 文件加载到 Firebird 中?

使用 Symmetricds 时出现 Firebird 错误

Firebird2.5 错误:“唯一索引中的重复值”没有重复数据