Request Firebird BLR 623请求无效-未定义LRTRIM-找不到模块名称或入口点

Request Firebird BLR 623请求无效-未定义LRTRIM-找不到模块名称或入口点,request,firebird,Request,Firebird,我在Firebird 2.5数据库中工作: 当我运行一些使用LRTRIM函数的存储过程或视图(数据库对象)时,偶尔(并非总是)会出现以下错误: 无效令牌。 偏移量623处的请求BLR无效 未定义函数LRTRIM 找不到模块名或入口点 分析过程XXXXXXX(存储过程名称)时出错 (我在IB Expert和SSRS中都能看到) 这意味着我可以访问其他不使用LRTRIM功能的数据库对象 我与LTRIM有过类似的问题,现在我得到了LRTRIM。几天前,我已将firebird.msg从firebird文

我在Firebird 2.5数据库中工作:

当我运行一些使用LRTRIM函数的存储过程或视图(数据库对象)时,偶尔(并非总是)会出现以下错误:

无效令牌。 偏移量623处的请求BLR无效 未定义函数LRTRIM 找不到模块名或入口点 分析过程XXXXXXX(存储过程名称)时出错

(我在IB Expert和SSRS中都能看到)

这意味着我可以访问其他不使用LRTRIM功能的数据库对象

我与LTRIM有过类似的问题,现在我得到了LRTRIM。几天前,我已将firebird.msg从firebird文件夹复制到Windows文件夹,这是我收到的新错误消息

我的临时解决办法:

有时我会重新启动机器,并且能够运行这些存储过程和视图,而这些存储过程和视图有时又会抛出此错误。在其他时候,我会重新启动机器几次,并且能够访问这些视图和存储过程

在其他一些时候,我多次重启机器,仍然无法运行数据库对象。我很沮丧,今天就辞职了。第二天早上,当我打开机器时,我可以再次运行这些对象

这可能是什么原因?永久的解决办法是什么

**现在我有了这个:在32位文件夹C:\ProgramFiles(x86)\Firebird\Firebird_2_5\udf中,我找到了这8个文件:fbudf.dll、fbudf.sql、fbudf.txt、ib_udf.dll、ib_udf.sql、ib_udf2.sql、udf.dll、UDFPrici‌​ng.dll


但在64位文件夹C:\Program Files\Firebird\Firebird_2_5\UDF中,我找到了以下6个文件:fbudf.dll、fbudf.sql、fbudf.txt、ib_UDF.dll、ib_UDF.sql、ib_udf2.sql(我找不到32位文件夹中最后的2.dll文件-UDF.dll和UDFPricing.dll)**

在当前设置中,您似乎有两台Firebird服务器

  • C:\Program Files(x86)\Firebird\Firebird\u 2\u 5中的32位
  • C:\Program Files\Firebird\Firebird\u 2\u 5中的64位
  • 您的UDF声明指向模块
    UDF
    ,它不是标准的UDF,因此这很可能是由您的客户机提供的,用于他们的数据库。在32位服务器安装中,您只有这些UDF的库,这意味着您只能使用32位服务器。在某些未知的情况下,您会在32位和64位服务器之间切换,这意味着随后会连接到64位服务器,而该服务器没有所需的UDF,这将导致错误。您应该卸载64位服务器,这样就不会发生这种情况

    您评论说,由于SRS,您需要这两种服务,但事实并非如此。您的应用程序只需要一台Firebird服务器(32位64位;在本例中是32位,因为UDF),以及客户端库(32位64位)

    因此,您需要做的是:

  • 卸载64位Firebird服务器
  • 启动64位Firebird安装程序并仅安装客户端组件

  • 最后,再次检查连接字符串或连接属性,以确保始终连接到同一服务器(主机和端口),并且不会意外使用嵌入式连接。

    对我来说,解决方案是:

  • 转到默认Firebird目录安装(通常在C:\Program Files\Firebird\Firebird\u 3\u 0中)
  • 在记事本中打开文件firebird.conf
  • 搜索参数UdfAccess
  • 在参数名(#UdfAccess)之前使用字符#(hashtag)注释行
  • 在Windows搜索框中键入services.msc
  • 寻找火鸟服务
  • 使用鼠标右键单击Firebird服务
  • 选择停止
  • 使用鼠标右键单击Firebird服务
  • 选择开始

  • lrtim
    看起来像一个打字错误(对于
    LTRIM
    ),您确定1)它是
    lrtim
    ,2)您确实有
    lrtim
    的自定义项定义,3)您的自定义项库(或多个库)实际上,对于为
    lrtim
    UDF定义的任何内容都有一个入口点?这个问题被问了好几次,并在评论中给出了答案。请了解Firebird客户端和服务器之间的区别(例如,从这里:,或这里:,@ValMarinov,这个问题是由同一个用户提出的,唯一的区别似乎是关于LTRIM的,而这是关于LRTRIM的。@Mark,我想这是tipo。正如我对你在Firebird tracker上发布的bugreport发表的评论,你真的应该在Firebird支持邮件列表上发布这个问题。你或者您的服务器设置一直存在问题,或者出现了其他问题,需要比StackOverflow这样的问答网站更多的故障排除。请检查如何订阅firebird-support。这是一个很有意义的标记;我真的不懂服务器+客户端的术语;今天,我的同事还提出了一些建议se行。我会回来的,非常感谢。与此同时,我已向Firebird支持小组发送了另一封电子邮件,提供UDF的定义。我想您可能也看到了这一点。@user3812887服务器是打开数据库文件并向客户端提供对数据库的访问的服务器,客户端动态链接到应用程序和与服务器的对话(通常通过有线协议)代表应用程序。或者,我不能在64位服务器udf文件夹中添加udf.dll吗?这与您提供的解决方案相同吗?只是想知道这是否也相同possible@user3812887不,您不能将32位DLL与64位应用程序一起使用。如果您想这样做,您需要询问您的客户机是否也有这些UDF的64位DLL。你能提供任何链接让我单独安装Firebird 2.5 64位客户端吗?我只是不想