Mirth Connect 数据库读取器未返回结果

如何解决Mirth Connect 数据库读取器未返回结果

我正在尝试使用以下 postgresql 块,通过设置一个通道,将源作为数据库读取器,将目标作为文件写入器来存储结果特定目录中的 xlm 文件。在我启用它时设置通道后,它只是停留在轮询状态,服务器日志中出现以下错误。 但是当我用一个简单的选择查询替换这个块时,它就起作用了。如果您能帮助我了解我哪里出错了,或者 Mirth 频道没有读取 psql 块,那将非常有帮助?

declare
  tableName text;
  msgCount int;
  channelName text;
  channelID text;
  countDate date;
  PortNum text;
begin
  raise info ' | CHANNEL NAME | CHANNEL ID | DATE | COUNT | PORT NUM';
  execute 'select CURRENT_DATE-1' into countDate;
  <<"Yesterday's Received Message Count">>
  for tableName in (select local_channel_id from d_channels) loop
    execute 'select count(*) from d_mm' || tableName || ' where connector_name = ''Source'' and received_date between (select CURRENT_DATE-31 || '' 00:00:00.00'')::timestamp and (select CURRENT_DATE-1 || '' 23:59:59.99'')::timestamp' into msgCount;
    execute 'select channel.name from channel inner join d_channels on d_channels.channel_id = channel.id where d_channels.local_channel_id = '|| tableName into channelName;
    execute 'select channel.id from channel inner join d_channels on d_channels.channel_id = channel.id where d_channels.local_channel_id = '|| tableName into channelID;
    execute 'select substring (channel.channel,position (''<port>'' IN channel)+6,4) AS port from channel inner join d_channels on d_channels.channel_id = channel.id where d_channels.local_channel_id = '|| tableName into PortNum;
    raise info ' | %',channelName || ' | ' || channelID || ' | ' || countDate || ' | '|| msgCount || ' | '|| PortNum;
  end loop "Yesterday's Received Message Count";
end;
$channelLoop$;

错误

[2021-06-28 04:07:16,410]  ERROR  (com.mirth.connect.connectors.jdbc.DatabaseReceiverQuery:207): An error occurred while polling for messages,retrying after 10000 ms...
org.postgresql.util.PsqlException: No results were returned by the query.
    at org.postgresql.jdbc.PgPreparedStatement.executeQuery(PgPreparedStatement.java:117)
    at com.mirth.connect.connectors.jdbc.DatabaseReceiverQuery.poll(DatabaseReceiverQuery.java:190)
    at com.mirth.connect.connectors.jdbc.DatabaseReceiver.poll(DatabaseReceiver.java:111)
    at com.mirth.connect.donkey.server.channel.PollConnectorJob.execute(PollConnectorJob.java:49)
    at org.quartz.core.JobRunShell.run(JobRunShell.java:213)
    at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:557)

解决方法

老实说,我不确定这里发生了什么。

Mirth 将把您在 DB Reader 中放入的任何内容作为 SQL 查询,并使用它使用您选择的任何 JDBC 驱动程序创建一个 java.sql.PreparedStatement。然后它执行 PreparedStatement,并根据您是否使用替换令牌在必要时传递任何参数。

我不知道 postgres 驱动程序是否允许将其编译为准备好的语句并执行。看起来可能确实如此,因为直到您尝试执行查询后它才会抱怨。

问题似乎是查询没有返回 ResultSet。查看您的代码,我认为您将输出发送到 postgres 日志?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?