簡體   English   中英

Mirth Database Reader 無法處理從通道中的數據庫檢索到的行(索引超出范圍)?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM