Firebird 数据库还原期间解析过程时出错

Error while parsing procedure during Firebird database restore

我正在尝试恢复 Firebird 2.5.5 上的数据库,该数据库已在 Firebird 2.5.1 中备份

gbak -c -p 4096 -user SYSDBA -password "pass" -v /var/lib/firebird/data/db_data_201606150100.gbk /var/lib/firebird/data/db_data.gdb

我在还原过程中收到下一条消息:

gbak: activating and creating deferred index RDB$FOREIGN97
gbak: activating and creating deferred index RDB$FOREIGN450
gbak: committing metadata
gbak: ERROR:Error while parsing procedure P_IMPORTTRANS's BLR
gbak: ERROR: function F_DOCNUM is not defined
gbak: ERROR: module name or entrypoint could not be found
gbak:Exiting before completion due to errors

在 Firebird 2.5.5 上连接到数据库后,我没有看到任何过程和视图。似乎数据库没有正确恢复。

如何解决这个错误?

此错误是由于在存储过程中使用 UDF(用户定义函数)导致的,无法访问该库(因为它不在此处,位数错误,或者 OS 特权或 Firebird 配置不允许访问)。

当定义 UDF 时,允许库不可访问,但当创建引用此 UDF 的存储过程时,它需要存在。

换句话说,您需要找出您在 Firebird 2.5.1 安装中使用的 UDF 库,并将其安装在您的 Firebird 2.5.5 服务器中。

UDF 库通常放在 Firebird 安装的 udf 文件夹中,但 Firebird 可以配置为在其他地方查找它们(firebird.conf 设置 UdfAccess)。否则,您将需要删除或更改存储过程以删除对 UDF 的引用并尝试新的备份和恢复。据我所知,在恢复时无法跳过此错误(例如,不创建存储过程)。