首页 > 解决方案 > 在 logstash .conf 文件中执行 JDBC 查询时出现异常

问题描述

MySQL 5.6.35 RHEL 7 Logstash 版本 6.2.4 MySQL 驱动:mysql-connector-java-8.0.11.jar

运行 logstash 脚本时出现以下错误

[2018-06-18T14:39:49,395][WARN ][logstash.inputs.jdbc     ] Exception when executing JDBC query {:exception=>#<Sequel::DatabaseError: Java::JavaLang::IllegalArgumentException: MONTH>}
[2018-06-18T14:39:49,667][INFO ][logstash.pipeline        ] Pipeline has terminated {:pipeline_id=>"main", :thread=>"#<Thread:0x2937cfc6@/usr/share/logstash/logstash-core/lib/logstash/pipeline.rb:247 run>"}

它总是在同一组记录中,所以我确信这是一个数据问题。

错误提到的事实IllegalArgumentException: MONTH>让我认为这是一个日期问题,但我在数据中看不到任何明显的问题,并且错误消息没有为我提供足够的信息来进一步了解错误。我所有的空日期都是空的,而不是 '0000-00-00'

有谁知道是否有任何其他日志可以帮助我识别错误。

这是我的 conf.d 文件夹中的脚本。

input {
  jdbc {
    jdbc_connection_string => "jdbc:mysql://localhost:3306/hawk_aol"
#useCursorFetch=true&
    # The user we wish to execute our statement as
    jdbc_user => "root"
    jdbc_password => ""
    # The path to our downloaded jdbc driver
    jdbc_driver_library => "/apps/elasticsearch/drivers/mysql-connector-java-8.0.11.jar"
    jdbc_driver_class => "com.mysql.jdbc.Driver"
    # our query
    statement => "SELECT * FROM weekly_data"
    #jdbc_fetch_size => "5000"
    jdbc_paging_enabled => true
    jdbc_page_size => 100000

    }
  }
output {
  stdout { codec => json_lines }
  elasticsearch {
  "hosts" => "localhost:9200"
  "index" => "aol"
  "document_type" => "weekly_data"
  "document_id" => "%{id}"
  }
}

标签: elasticsearchjdbclogstash

解决方案


我解决了我自己的问题。我认为这个问题与日期有关,我一直在我的数据库中搜索值为 0000-00-00 的日期并将它们转换为 null,但是有一个日期的值为 2016-00-00,一旦我将其清除为空,一切都按预期开始运行。


推荐阅读