json 如何修复在尝试访问Firebird数据库时出现的错误“系统找不到指定的文件,”

pftdvrlh  于 2023-01-27  发布在  其他
关注(0)|答案(1)|浏览(67)

到目前为止,我的方法非常简单,但我很难解析和连接fdb文件。
我为我的文件下载了正确版本的Firebird(2.5)。我试图这样做

con = fdb.connect(dsn='202204.fdb', user='sysdba', password='masterkey')

这将导致以下错误:
202204.FDB.delta“\n-尝试打开文件时出错\n-系统找不到指定的文件。',-902,335544344)
我做错了什么?我错过了这个delta文件吗?有没有更好的方法?
注:我没有使用火鸟的经验。

n3schb8v

n3schb8v1#

问题在于,您的数据库文件是在数据库处于备份模式(或"暂停")时复制的。在此模式下,主数据库文件不会更新,更新内容会写入增量文件。执行命令ALTER DATABASE BEGIN BACKUP(或nbackup -lock <database>命令)时会进入此模式。
在正常情况下,一旦执行ALTER DATABASE END BACKUP(或nbackup -n <database>命令,或-Firebird 3.0和更高版本-nbackup -unlock <database>),此增量文件就会重新集成到数据库中。
但是,在您的情况下,您只有一个停止的数据库的副本。要能够使用该数据库,您需要使用命令nbackup -f <database> "修正"该数据库。nbackup是Firebird安装目录中包含的命令行工具(在Firebird 2.5中,位于Firebird安装的bin目录中)。修复后,数据库将与进入备份模式 * 之前 * 的数据库完全相同,进入备份模式后的任何更改都将在副本中丢失

    • 警告**:仅当这实际上只是一个副本时才执行修正,否则,您实际上应该获取增量文件,并使用ALTER DATABASE END BACKUPnbackup -n <database>以避免数据丢失。数据库一旦"修正",就无法重新集成增量文件。

另请参见Firebird nbackup tool documentation,特别是锁定和解锁章节。

相关问题