【问题标题】:Database errors in Mirth channelMirth 频道中的数据库错误
【发布时间】:2015-08-10 08:45:42
【问题描述】:

我想使用 Mirth 连接到数据库,然后将记录写入该数据库中的表。

记录包含一个字段“file_name”,这个文件名包含Date值,所以一个新文件的名字应该是这样的:

temp_2015-08-10 

这是我传递给 Mirth Destination SQL 字段的内容:

INSERT INTO statutory_reports (str_est_id, str_type, str_create_date, str_created, str_record_status, str_file_path, str_file_name, str_created_by) VALUES (2, 'temp', CURDATE(), NOW(),'approved', 'C:/application/reports/temp reports/gumcad/', 'temp'+ ${date.get('yyyy-M-d hh:MM:ss')}, 'SHEP');       

问题是我得到一个错误:

Database Writer error
ERROR MESSAGE: Failed to write to database
com.mirth.connect.connectors.jdbc.DatabaseDispatcherException: Failed to write to database
    at com.mirth.connect.connectors.jdbc.DatabaseDispatcherQuery.send(DatabaseDispatcherQuery.java:143)
    at com.mirth.connect.connectors.jdbc.DatabaseDispatcher.send(DatabaseDispatcher.java:103)
    at com.mirth.connect.donkey.server.channel.DestinationConnector.handleSend(DestinationConnector.java:738)
    at com.mirth.connect.donkey.server.channel.DestinationConnector.process(DestinationConnector.java:436)
    at com.mirth.connect.donkey.server.channel.DestinationChain.call(DestinationChain.java:155)
    at com.mirth.connect.donkey.server.channel.Channel.process(Channel.java:1656)
    at com.mirth.connect.donkey.server.channel.Channel.dispatchRawMessage(Channel.java:1155)
    at com.mirth.connect.donkey.server.channel.SourceConnector.dispatchRawMessage(SourceConnector.java:191)
    at com.mirth.connect.donkey.server.channel.SourceConnector.dispatchRawMessage(SourceConnector.java:169)
    at com.mirth.connect.connectors.jdbc.DatabaseReceiver.processRecord(DatabaseReceiver.java:200)
    at com.mirth.connect.connectors.jdbc.DatabaseReceiver.processResultSet(DatabaseReceiver.java:160)
    at com.mirth.connect.connectors.jdbc.DatabaseReceiver.poll(DatabaseReceiver.java:117)
    at com.mirth.connect.donkey.server.channel.PollConnector$PollConnectorTask.run(PollConnector.java:131)
    at java.util.TimerThread.mainLoop(Unknown Source)
    at java.util.TimerThread.run(Unknown Source)
Caused by: com.mysql.jdbc.MysqlDataTruncation: Data truncation: Truncated incorrect DOUBLE value: '2015-8-10 09:08:44'
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4206)
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4140)
    at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2597)
    at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2758)
    at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2826)
    at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:2082)
    at com.mysql.jdbc.PreparedStatement.execute(PreparedStatement.java:1302)
    at com.mirth.connect.connectors.jdbc.DatabaseDispatcherQuery.send(DatabaseDispatcherQuery.java:130)

【问题讨论】:

  • 看起来数据会被截断,检查列的长度并将其与您要插入的实际数据的长度进行比较。
  • 请选择正确答案

标签: mirth


【解决方案1】:

问题是数据库期望 yyyy-MM-dd 作为 DATE,而您提供的是 yyyy-M-dd hh:mm:ss(请注意月份为一位数)。

用两位数的月份正确格式化您的日期并删除时间部分。如果你想提供时间,你的数据库类型应该是 DATETIME。

【讨论】:

    【解决方案2】:

    描述性很强:Truncated incorrect DOUBLE value: '2015-8-10 09:08:44'

    值(日期)不是双精度类型。

    str_create_datestr_created 在您的数据库中被定义为双精度,但您正在向其写入不匹配的 Date 类型。

    如果不是这样,您可以在此处复制您的数据库架构以进行验证吗?

    【讨论】:

    • 出于安全原因,我恐怕不能。但我是创建数据库模式的人,它的数据类型是 DATE,我认为问题出在 API 或其他方面。
    【解决方案3】:

    vim 到 /opt/mirthconnect/conf/mirth.properties

    在数据库 url 下复制:jdbc:mysql://localhost/mirthdb?useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC

    新的 JavaMysql odbc 似乎有这个要求,我认为是出于安全原因

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多