尝试将 RDS MySQL 表流式传输到 Redshift 时出现此错误:转换数据时出错,参数类型无效
问题字段是DATETIME
MySQL 和timestamp without time zone
Redshift 中的 a (同样适用于timestamp with time zone
)。注意:在我填充日期字段之前,管道工作正常。
我们使用 Debezium 作为 Kafka Connect 源,用于将数据从 RDS 获取到 Kafka。以及用于接收器的带有 Redshift JDBC 驱动程序的 JDBC 接收器连接器。
另外...如果我将 Redshift 字段设为 avarchar
或 a ,我就能让数据流动起来bigint
。当我这样做时,我看到数据以毫秒为单位的 unix 纪元整数出现。但我们真的很想要一个时间戳!
上下文中的错误消息:
2018-10-18 22:48:32,972 DEBUG || INSERT sql: INSERT INTO "funschema"."test_table"("user_id","subscription_code","source","receipt","starts_on") VALUES(?,?,?,?,?) [io.confluent.connect.jdbc.sink.BufferedRecords]
2018-10-18 22:48:32,987 WARN || Write of 28 records failed, remainingRetries=7 [io.confluent.connect.jdbc.sink.JdbcSinkTask]
java.sql.BatchUpdateException: [Amazon][JDBC](10120) Error converting data, invalid type for parameter: 5.
at com.amazon.jdbc.common.SStatement.createBatchUpdateException(Unknown Source)
at com.amazon.jdbc.common.SStatement.access$100(Unknown Source)
at com.amazon.jdbc.common.SStatement$BatchExecutionContext.createBatchUpdateException(Unknown Source)
at com.amazon.jdbc.common.SStatement$BatchExecutionContext.createResults(Unknown Source)
at com.amazon.jdbc.common.SStatement$BatchExecutionContext.doProcess(Unknown Source)
at com.amazon.jdbc.common.SStatement$BatchExecutionContext.processInt(Unknown Source)
at com.amazon.jdbc.common.SStatement.processBatchResults(Unknown Source)
at com.amazon.jdbc.common.SPreparedStatement.executeBatch(Unknown Source)
at io.confluent.connect.jdbc.sink.BufferedRecords.flush(BufferedRecords.java:138)
at io.confluent.connect.jdbc.sink.JdbcDbWriter.write(JdbcDbWriter.java:66)
at io.confluent.connect.jdbc.sink.JdbcSinkTask.put(JdbcSinkTask.java:75)
谢谢,
汤姆