kettle从oracle数据库表输入,更新数据到linux服务器的5.7.29mysql数据库时,提示Caused by: com.mysql.jdbc.MysqlDataTruncation: Data truncation: Truncated incorrect DOUBLE value: '0000004856AD4ECABF0023125F432651'
更新数据到windows服务器5.7.17版本mysql数据库同样格式的表时,是正常的
ERROR (version 8.3.0.0-371, build 8.3.0.0-371 from 2019-06-11 11.09.08 by buildguy) : Error in step, asking everyone to stop because of:
2024/11/25 09:49:58 - 插入 / 更新.0 - ERROR (version 8.3.0.0-371, build 8.3.0.0-371 from 2019-06-11 11.09.08 by buildguy) : org.pentaho.di.core.exception.KettleDatabaseException:
2024/11/25 09:49:58 - 插入 / 更新.0 - Error inserting/updating row
2024/11/25 09:49:58 - 插入 / 更新.0 - Data truncation: Truncated incorrect DOUBLE value: '0000004856AD4ECABF0023125F432651'
2024/11/25 09:49:58 - 插入 / 更新.0 -
2024/11/25 09:49:58 - 插入 / 更新.0 - at org.pentaho.di.core.database.Database.insertRow(Database.java:1324)
2024/11/25 09:49:58 - 插入 / 更新.0 - at org.pentaho.di.core.database.Database.insertRow(Database.java:1248)
2024/11/25 09:49:58 - 插入 / 更新.0 - at org.pentaho.di.core.database.Database.insertRow(Database.java:1236)
2024/11/25 09:49:58 - 插入 / 更新.0 - at org.pentaho.di.trans.steps.insertupdate.InsertUpdate.lookupValues(InsertUpdate.java:163)
2024/11/25 09:49:58 - 插入 / 更新.0 - at org.pentaho.di.trans.steps.insertupdate.InsertUpdate.processRow(InsertUpdate.java:299)
2024/11/25 09:49:58 - 插入 / 更新.0 - at org.pentaho.di.trans.step.RunThread.run(RunThread.java:62)
2024/11/25 09:49:58 - 插入 / 更新.0 - at java.lang.Thread.run(Thread.java:750)
2024/11/25 09:49:58 - 插入 / 更新.0 - Caused by: com.mysql.jdbc.MysqlDataTruncation: Data truncation: Truncated incorrect DOUBLE value: '0000004856AD4ECABF0023125F432651'
2024/11/25 09:49:58 - 插入 / 更新.0 - at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3971)
2024/11/25 09:49:58 - 插入 / 更新.0 - at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3909)
2024/11/25 09:49:58 - 插入 / 更新.0 - at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2527)
2024/11/25 09:49:58 - 插入 / 更新.0 - at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2680)
2024/11/25 09:49:58 - 插入 / 更新.0 - at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2501)
2024/11/25 09:49:58 - 插入 / 更新.0 - at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:1858)
2024/11/25 09:49:58 - 插入 / 更新.0 - at com.mysql.jdbc.PreparedStatement.executeUpdateInternal(PreparedStatement.java:2079)
2024/11/25 09:49:58 - 插入 / 更新.0 - at com.mysql.jdbc.PreparedStatement.executeUpdateInternal(PreparedStatement.java:2013)
2024/11/25 09:49:58 - 插入 / 更新.0 - at com.mysql.jdbc.PreparedStatement.executeLargeUpdate(PreparedStatement.java:5104)
2024/11/25 09:49:58 - 插入 / 更新.0 - at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1998)
2024/11/25 09:49:58 - 插入 / 更新.0 - at org.pentaho.di.core.database.Database.insertRow(Database.java:1291)
2024/11/25 09:49:58 - 插入 / 更新.0 - ... 6 more
kettle更新mysql数据库报错
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
1条回答 默认 最新
关注♥ 该回答参考ChatGPT,由吾为汝整理提供,如若有用,还请题主采纳!♥
根据您提供的错误信息,问题似乎出在 Kettle 更新 MySQL 数据库时,尝试将一个字符串('0000004856AD4ECABF0023125F432651')插入到一个期望为 DOUBLE 类型的字段中。这种情况下,MySQL 无法将该字符串转换为 DOUBLE,因此抛出了数据截断的错误。
以下是一些可能的解决方案和建议:
检查数据类型:
- 确保 MySQL 数据库中目标字段的数据类型与您要插入的数据类型匹配。如果该字段应该存储字符串,考虑将其数据类型更改为 VARCHAR 或 CHAR。
数据转换:
- 在 Kettle 中,您可以使用转换步骤(如“转换字段”)将数据类型转换为合适的格式。例如,如果目标字段是字符串类型,确保在插入之前将数据转换为字符串。
检查数据源:
- 确保从 Oracle 数据库提取的数据格式正确,并且与 MySQL 数据库中的目标字段兼容。
调试和日志:
- 在 Kettle 中启用详细日志记录,以便更好地理解数据流和转换过程。查看日志中是否有其他相关的错误信息。
版本差异:
- 注意到您提到在不同版本的 MySQL 中表现不同。可能是由于版本之间的兼容性问题,确保两个 MySQL 版本的配置和数据类型一致。
使用 SQL 语句:
- 如果 Kettle 的图形界面无法解决问题,可以尝试直接使用 SQL 语句进行插入或更新操作,确保数据类型匹配。
如果您能提供更多关于数据结构和转换步骤的信息,我可以帮助您更具体地分析问题。请逐步检查这些建议,看看是否能解决您的问题。
解决 无用评论 打赏 举报