Mirth数据库读取器无法处理从通道中的数据库检索到的行(索引超出范围)



我有一个Mirth(v3.10(数据库读取器通道源,它使用查询获取一些测试记录(来自SQL Server源(。。。

select * 
from [mydb].[dbo].[lab_test_MIRTHTEST_001]
where orc_2_1_placer_order_number 
in (
'testid_001', 'testid_002', 'testid_003'
)

尽管通道似乎正常工作,消息被写入通道目标,但在部署通道时,我在仪表板中的服务器日志中看到了SQL错误:

[2020-12-16 08:16:28,266]  ERROR  (com.mirth.connect.connectors.jdbc.DatabaseReceiver:268): Failed to process row retrieved from the database in channel "MSSQL2SFTP_TEST"
com.mirth.connect.connectors.jdbc.DatabaseReceiverException: com.microsoft.sqlserver.jdbc.SQLServerException: The index 1 is out of range.
at com.mirth.connect.connectors.jdbc.DatabaseReceiverQuery.runPostProcess(DatabaseReceiverQuery.java:233)
at com.mirth.connect.connectors.jdbc.DatabaseReceiver.processRecord(DatabaseReceiver.java:260)
...

我可以在SQL Server Mgmt Studio本身中很好地运行这个查询(消息似乎传输得很好(,所以不确定为什么会出现这个错误,但我担心这里缺少一些东西。

有经验的人知道这里发生了什么吗?如何修复?

问题似乎出现在数据库读取器的后处理SQL部分,因此消息似乎正在工作是有道理的。

您是否打算启用源选项卡底部的后处理部分?

请共享用于处理结果集中数据的代码。同时,您可以将下面的代码视为起点。您可以将其放置在通道的源连接器中的Javascript transformer步骤中。

//Declaring variables to hold column values returned from the result set
var variable1;
var variable2;
//defining the sql read command
var  Query = "select * from [mydb].[dbo].[lab_test_MIRTHTEST_001]";
Query += " where orc_2_1_placer_order_number in";
Query += " ('testid_001', 'testid_002', 'testid_003')";
var result = dbconn.executeCachedQuery(Query);  
//where dbconn is your database connection string
//looping through the results
while(result.next())
{

variable1=result.getString("variable1");
variable2 = result.getString("variable2");

}
//optionally place the returned values in a channel map for use later
$c('variable1',variable1);
$c('variable2',variable2);

最新更新