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 - 数据库文件关闭错误消息的主要内容,如果未能解决你的问题,请参考以下文章
Firebird x Windows 7 x gds32.dll 错误
firebird 数据库恢复 firebird数据库修复 interbase数据库恢复 firebird blob错误恢复
如何将 Excel 或 CSV 文件加载到 Firebird 中?