项目场景:
提示:这个问题的mysql连接设置的问题类型不一致,然后我是用flink连接mysql报错。
问题描述:
Caused by: com.mysql.jdbc.MysqlDataTruncation: Data truncation: Truncated incorrect DOUBLE value: 'sensor_1'
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3513)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3447)
at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1951)
at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2101)
at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2554)
at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:1761)
at com.mysql.jdbc.PreparedStatement.execute(PreparedStatement.java:1021)
at com.Flink.MyJdbcSinkFunc.invoke(JdbcSinkTest.scala:48)
at com.Flink.MyJdbcSinkFunc.invoke(JdbcSinkTest.scala:33)
at org.apache.flink.streaming.api.functions.sink.SinkFunction.invoke(SinkFunction.java:52)
at org.apache.flink.streaming.api.operators.StreamSink.processElement(StreamSink.java:56)
at org.apache.flink.streaming.runtime.tasks.OperatorChain$CopyingChainingOutput.pushToOperator(OperatorChain.java:641)
... 12 more
Process finished with exit code 1
原因分析:
提示 ,当比较的数据类型不一致且无法强制转换时,就会出现上述错误,因为我的id是String,而temp是Double,然而我在代码中将类型以及位置设置错误,所以出现了上述错误。所以把类型也改过来之后,就可以正常运行了。因此在数据库建模时要多加注意数据类型,或者在where语句中进行条件判断的时候也要注意数据类型。
解决方案:
把数据类型和对应的位置改过来,确保类型一致,这样就不会出错了。