到目前为止,我的方法非常简单,但我很难解析和连接fdb文件。
我为我的文件下载了正确版本的Firebird(2.5)。我试图这样做
con = fdb.connect(dsn='202204.fdb', user='sysdba', password='masterkey')
这将导致以下错误:
202204.FDB.delta“\n-尝试打开文件时出错\n-系统找不到指定的文件。',-902,335544344)
我做错了什么?我错过了这个delta文件吗?有没有更好的方法?
注:我没有使用火鸟的经验。
1条答案
按热度按时间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 BACKUP
或nbackup -n <database>
以避免数据丢失。数据库一旦"修正",就无法重新集成增量文件。另请参见Firebird nbackup tool documentation,特别是锁定和解锁章节。