【问题标题】:Firebird sql update command not working in delphi [duplicate]Firebird sql更新命令在delphi中不起作用[重复]
【发布时间】:2015-12-30 05:51:30
【问题描述】:

我正在尝试使用 Delphi - RAD Studio X5 进行 firebird 数据库管理,但每次执行此命令时都会遇到问题:

   update ESTOQUE set QTD='700' where CODIGO='1'

我收到了这条消息:

"[FireDAC][Phys][FB]invalid request BLR at offset 241 function HASHMD5 is not defined unkown error 335544932"

当我运行查询命令 (select * from ESTOQUE) 时,它运行良好。

我的firebird版本是2.5

我的 Windows 是 8.1 和 Windows 10(两者都出现问题)

我在数据库函数中有以下定义: " 声明外部函数 HASHMD5 CSTRING(32767) 字符集 WIN1252 返回 CSTRING(255) 字符集 WIN1252 ENTRY_POINT 'RetornarHashMD5' MODULE_NAME 'mylibrary_udf'; "

数据库 adm FlameRobin 和 delphi 应用程序都无法读取 mylibrary_udf.dll。我怎样才能做到这一点?

【问题讨论】:

  • 您的 Firebird 服务器的 udf 文件夹中是否真的有这个 mylibrary_udf.dll?它是 32 位还是 64 位库,你的 Firebird 安装的是 32 位还是 64 位?
  • 我解决了,问题是firebird版本....而mylibrary_udh.dll在firebird udf文件夹中....谢谢....
  • 是的,mylibrary_udf 在 firebird udf 文件夹中....问题是 firebird 版本....我用的是 2.5 版本,正确的是 2.0 版本,它解决了问题
  • 适用于 2.0 版的 UDF,也应该适用于 2.5;我认为这是一个 32 位 64 位问题。

标签: sql delphi firebird


【解决方案1】:

错误消息表明您的数据库有一个名为 HASHMD5 已定义(并用于存储过程、触发器或计算 字段),但 Firebird 无法访问 UDF 库。

看到这个答案:Invalid request BLR at offset 258 , function HASHMD5 is not defined?

可能在表 ESTOQUE 中有一个计算字段或触发器 BEFORE/AFTER UPDATE 使用称为 HASHMD5 的 UDF 来计算哈希值。

【讨论】:

  • 如果这个答案是正确的(我认为它是正确的)通过数据库查询工具运行更新命令,即在 Delphi 代码之外,应该会产生同样的错误。
  • @HughJones 不一定,也许该工具使用 Firebird 嵌入式和应用程序 firebird 服务器(反之亦然)。或者一个连接到 64 位 Firebird,另一个连接到同一服务器上的 32 位 Firebird。一个有 UDF,另一个没有(或者它是错误的位数)等等。
  • @MarkRotteveel - 当然我的意思是连接到同一台服务器。 UDF 安装在服务器上 - 对吧? (或者我忘记了它是如何工作的?)
  • @HughJones 连接到同一台服务器时,它的行为确实应该相同。但不幸的是,我在这里看到了一些关于火鸟支持的问题,这些问题最终是由连接到错误的服务器/嵌入式服务器引起的。然而,OP 说运行选择不会产生错误,而更新会产生错误,因此不同的查询类型,所以这个讨论可能有点不必要;)
  • 没关系 - 我只是担心我忘记了如何部署 UDF
【解决方案2】:

错误

无效的请求 BLR

最常发生在存储过程/触发器不一致时。在您的情况下,问题可能是绑定到更新表的触发器(因此错误仅在您更新时发生,而不是在您选择时发生)。所以检查表 Estoque 并检查更新之前/之后的触发器,如果​​有一个存储过程,检查它是否有正确的参数数量/顺序/类型(例如,触发器调用带有 5 个参数的存储过程,但她实际上有 7 个参数)

【讨论】:

  • 错误代码335544932的意思是“找不到模块名称或入口点”,这意味着无法加载必要的UDF库。
  • 感谢您的信息。所以我必须删除我的答案?其他人可能有无效请求 BLR 的问题,可能与 UDF 函数无关。
  • 我认为这是你的选择;即使它没有回答这个特定问题,它也可能对其他“无效请求 BLR”的人有所帮助。
猜你喜欢
  • 1970-01-01
  • 2017-09-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-23
相关资源
最近更新 更多