生产现场
场景
kettle的.sh批量执行文件内包含了a.job和b.job,a.job在b.job前面
问题
生产环境下设置的晚上4点执行kettle的b.job作业,4点没有执行白天12点多执行
排查过程
1.生产环境查看linux的定时命令
没有错误
2.从生产环境拿到kettle执行日志
1.查找b.job的kettle执行日志,发现每天中午执行,且没有报错
2.查找a.job的kettle执行日志,发现报错,且执行时间在中午
3.查看kettle日志执行时间,job是否是线性执行(按顺序执行)
通过查看日志确定job是线性执行
4.问题定位
a.job执行出错,导致长时间执行12点多结束,此时b.job开始执行
5.问题继续
查看a.job支持报错日志
Truncated incorrect DOUBLE value: '006a97d8d813420398b08fc890a78084'
6. 二次定位问题
存在两种情况发生这种问题:① 赋值的时候,类型无法匹配;②where条件比较的时候类型无法匹配
7.比对数据库赋值字段类型
没有问题
8.确定问题
where条件比较的时候有问题,对比发现id赋值的时候,将int值和varchar比较,导致无法匹配发生错乱
9.问题解决
以业务库为准,修改存储过程id值字段类型,修改存储过程id值字段类型