【发布时间】:2018-08-28 11:35:08
【问题描述】:
我正在尝试同步两个 Firebird 数据库。首先,我已经配置了同步是单向的。因此,一个数据库是Source-DB,另一个是target-DB。
要开始同步,我使用 IBReplicator!当我开始同步时,我收到错误:
Exception: Invalid token
invalid request BLR at offset 340
function F_LRTRIM is not defined
module name or entrypoint could not be found
我开始寻找问题的原因。我已经检查过的内容:
- .dll文件存在于firebird目录中
- Firebird 版本是 32 位
- IBExpert 在数据库的 UDF 部分显示 UDF。
我了解到,当 Firebird 服务器版本和 .dll 文件版本不匹配时,可能会出现问题。但我不知道如何验证版本。
我想搜索一个 .conf 文件来检查 UDF 文件 (.dll) 的路径,但我没有找到。我只找到了 firebird.conf 文件,并且我已经将 UDFAccess 设置为 Full。
如果有人可以帮助我,我将不胜感激。我在这个问题上浪费了大量时间。
【问题讨论】:
-
将
UdfAccess设置为Full是不安全的。无论如何,该错误表明您没有正确的 UDF 库,或者 Firebird 找不到它(意味着配置不正确或库的位置不在路径上)。 UDF 在数据库中定义的事实没有任何意义:它可能已定义,但在运行时,Firebird 找不到所需的库。根据提供的信息,我们无法真正帮助您。另外,考虑切换到TRIM。 -
可能将
UdfAccess更改为Restrict <location of the UDF>可能会解决您的问题。 -
我会写 {Restrict C:\Program Files (x86)\Firebird\Firebird_2_5\UDF}
-
或者我应该在字符串末尾添加文件+扩展名?
-
在这种情况下,您可以使用
Restrict UDF(无论如何这是默认值)。
标签: firebird user-defined-functions