连接到 Firebird 数据库时出现 BLR 错误

BLR error when connecting to Firebird database

我想通过 FlameRobin 连接本地文件夹中的 Firebird 数据库。我可以连接到除一个以外的所有数据库。我收到此数据库的错误:

invalid request BLR at offset 2801 function GETUSERINFO is not defined module name or entrypoint could not be found.

我找不到关于此错误的任何资源。这个错误是不是数据库版本不同导致的?

该错误意味着您的数据库有一个使用 UDF(用户定义的函数)的 on connect trigger,并且找不到该库 (Windows: .dll, Linux: .so) 加上那个 UDF 的代码。

您需要找出该数据库需要哪个库,并将其安装在正确的位置(默认是 Firebird 安装中的 udf 目录,但可以在 firebird.conf 设置 UdfAccess).

此错误的另一个原因是使用 Firebird 64 位,而库是 32 位(反之亦然)。您需要确保 Firebird 和库的位数相同。

或者,您可以以 SYSDBA 身份连接到数据库,传递 isc_dpb_no_db_triggers 连接 属性 以禁用该连接的数据库触发器。我不确定您是否可以使用 FlameRobin 做到这一点。

另见

补充一下,虽然这可能不是发帖人遇到的问题,但我在连接到远程服务器时遇到了类似的问题。连接到远程服务器时,语法如下所示:

>gsec -user SYSDBA -password masterke -database <Server>/<Port>:<FDB>

我错误地将 <FDB> 指定为我的数据库的名称,类似于使用 ISQL 时所做的操作。这会导致以下错误:

GSEC> display
invalid request BLR at offset 37
table USERS is not defined

但是只要指定Security2.fdb就没有问题了:

>gsec -user SYSDBA -password masterke -database <Server>/<Port>:Security2.fdb

请注意,当服务器本身上 运行 gsec 时,只需要使用凭据 - 不需要“-database”选项。