最近在用DataX做数据同步,分享一些常见的错误以及解决方案
错误一:
Traceback (most recent call last):.....
sqlalchemy.exc.OperationalError: (pymysql.err.OperationalError) (2003, "Can't connect to MySQL server on 'xx.xx.x.xx' (timed out)")
解决方法:连接问题,检查账号密码以及是否有读写权限
错误二:
java.sql.SQLException: Unknown collation: 'utf8mb4_0900_ai_ci' at com.alibaba.datax.common.exception.DataXException.asDataXException(DataXException.java:26) ~[datax-common-0.0.1-SNAPSHOT.jar:na]
解决方法:一般是编码不一致导致的,重新建表统一编码
错误三:
ERROR StdoutPluginCollector -
java.lang.IllegalArgumentException: HOUR_OF_DAY: 2 -> 3
at java.util.GregorianCalendar.computeTime(GregorianCalendar.java:2829) ~[na:1.8.0_181]
解决方法:这个错误是因为时区问题导致的,检查dataX生成脚本的url,是否有指定时区,没有的话加上:
&serverTimezone=Asia/Shanghai'
错误四:
ERROR WriterRunner - Writer Runner Received Exceptions:
com.alibaba.datax.common.exception.DataXException: Code:[DBUtilErrorCode-00], Description:[您的配置错误.]. - 列配置信息有错误. 因为您配置的任务中,源头读取字段数:36 与 目的表要写入的字段数:48 不相等. 请检查您的配置并作出修改.
at com.alibaba.datax.common.exception.DataXException.asDataXException(DataXException.java:26) ~[datax-common-0.0.1-SNAPSHOT.jar:na]
解决方法:这个是因为列和关键字重名了,给脚本添加一下for循环,给每个列都加上飘号``即可解决
写在最后:大家一定要注意,dataX的中文报错信息往往会误导你,仔细查看,从error处找真正报错原因,比如错误三,datax的中文报错是:
[您的配置错误.]. - 列配置信息有错误. 因为您配置的任务中,源头读取字段数:2 与 目的表要写入的字段数:10 不相等. 请检查您的配置并作出修改.
实际原因根本不是,如果去排查字段信息就是浪费时间,一定要心细一点哦