资讯详情

canal异常:cannot write xcontent for unknown value of type class java.sql.Timestamp

现象

同步数据异常

Caused by: java.lang.IllegalArgumentException: cannot write xcontent for unknown value of type class java.sql.Timestamp  at org.elasticsearch.common.xcontent.XContentBuilder.unknownValue(XContentBuilder.java:833) ~[na:na]  at org.elasticsearch.common.xcontent.XContentBuilder.map(XContentBuilder.java:888) ~[na:na]  at org.elasticsearch.common.xcontent.XContentBuilder.map(XContentBuilder.java:870) ~[na:na]  at org.elasticsearch.action.index.IndexRequest.source(IndexRequest.java:376) ~[na:na]  at org.elasticsearch.action.index.IndexRequest.source(IndexRequest.java:365) ~[na:na]  at org.elasticsearch.action.update.UpdateRequest.doc(UpdateRequest.java:643) ~[na:na]  at com.alibaba.otter.canal.client.adapter.es7x.support.ESConnection$ES7xUpdateRequest.setDoc(ESConnection.java:222) ~[na:na]

原因分析及解决方案

情况一

es中字段类型为text,而mysql类型为date类型,es客户端不支持正确java.sql.Timestamp类型转换为字符串。

  • 方案1:修改配置中的配置sql,调整Timestamp输出格式类型。
 sql: "select id,date_format(createtime,'%Y-%m-%d %H:%I:%S') createtime  from test_user"
  • 方案2:修改es中字段类型为date

情况二

adapter向es中创字段时,mysql为timestamp类型,不能创建字段。

  • 方案1

手动在es创建这个字段

  • 方案2

sql中timestemp将字段转换为字符串类型

标签: xtkj智能传感器

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

 锐单商城 - 一站式电子元器件采购平台  

 深圳锐单电子有限公司