我有一个 4D 服务器(我们称之为 4D 服务器 1),它通过 SOAP Web 服务将 BLOB 发送到另一个 4D 服务器(4D 服务器 2)。BLOB 由数组组成,解析后保存到相应的表中。
有时(很少)BLOB 无法解析,然后我们将日志记录到表中。指示的错误是:
错误 61:无法在已编译的数据库中修改数组的类型。
如何查明 BLOB 中的哪个数组导致错误?
我要采取哪些步骤来解决问题?
我有一个 4D 服务器(我们称之为 4D 服务器 1),它通过 SOAP Web 服务将 BLOB 发送到另一个 4D 服务器(4D 服务器 2)。BLOB 由数组组成,解析后保存到相应的表中。
有时(很少)BLOB 无法解析,然后我们将日志记录到表中。指示的错误是:
错误 61:无法在已编译的数据库中修改数组的类型。
如何查明 BLOB 中的哪个数组导致错误?
我要采取哪些步骤来解决问题?
要提取数组,您正在使用一些 BLOB TO VARIABLE 命令,如:
$vlOffset:=0
BLOB TO VARIABLE($blob;$array1;$vlOffset)
BLOB TO VARIABLE($blob;$array2;$vlOffset)
BLOB TO VARIABLE($blob;$array3;$vlOffset)
$vlOffset 将包含 Blob 内变量的起始位置。blob的内部结构是:RVLB + Type + Var + Type + Var ..
所以你应该尝试检查类型:第一个在位置 4,其他在 $vlOffset 位置:
cfr http://doc.4d.com/4Dv14/4D/14.4/Type.301-2512277.en.html
我们将数组和变量作为使用 ObjectTools 创建的 BLOB 发送。有更好的(错误)记录和处理例程。我们从未损坏过数组。
http://www.aparajitaworld.com/objecttools/ ObjectTools 是一个 4th Dimension 插件,它提供了一组允许您创建对象的例程:您可以在其中存储和检索任意数量的不同类型数据的单个实体.