我有以下JDBC输入:
input {
jdbc {
id => "mypipeline"
jdbc_driver_class => "com.mysql.jdbc.Driver"
jdbc_driver_library => "/usr/share/logstash/drivers/mysql-connector-j-8.0.32.jar"
jdbc_connection_string => "my-connection-string"
jdbc_password => "my-user"
jdbc_user => "my-pass"
jdbc_fetch_size => 5000
schedule => "*/5 * * * *"
statement => "SELECT l.id, l.name, l.log_date FROM logs l WHERE l.created_at >= :sql_last_value"
}
}
LOG_DATE列如下:
log_date DATE NULL DEFAULT NULL,
警告;created_at
和log_date
不是同一列.正在执行的查询如下所示:
SELECT l.id, l.name, l.log_date FROM logs l WHERE l.created_at >= '1970-01-01 02:00:00'
这是错误的,因为伊斯坦布尔没有进入DST,值应该是'1970-01-01 03:00:00'
,例如LOG_DATE的1949-04-10
,我收到了这个错误:
[2023-06-02T11:50:30,470][WARN ][logstash.inputs.jdbc ][main][mypipeline] Exception when executing JDBC query {:exception=>Sequel::DatabaseError, :message=>"Java::OrgJodaTime::IllegalInstantException: Illegal instant due to time zone offset transition (daylight savings time 'gap'): 1949-04-10T00:00:00.000 (Europe/Istanbul)", :cause=>"#<Java::OrgJodaTime::IllegalInstantException: Illegal instant due to time zone offset transition (daylight savings time 'gap'): 1949-04-10T00:00:00.000 (Europe/Istanbul)>"}
我该如何解决这个问题?