[英]Mirth Database Reader failed to process row retrieved from the database in channel (index out of range)?
我有一個 Mirth (v3.10) Database Reader 通道源,它使用查詢獲取一些測試記錄(來自 SQL 服務器源)...
select *
from [mydb].[dbo].[lab_test_MIRTHTEST_001]
where orc_2_1_placer_order_number
in (
'testid_001', 'testid_002', 'testid_003'
)
即使通道正確顯示為 function 並且消息正在寫入通道目標,我在部署通道時在儀表板中的服務器日志中看到 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 變壓器步驟中。
//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);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.