alibaba / DataX

DataX是阿里云DataWorks数据集成的开源版本。
Other
15.99k stars 5.45k forks source link

DataX同步到Hologres执行postSql时报连接数据库失败 #1638

Open moxiaotang opened 1 year ago

moxiaotang commented 1 year ago

各位大佬好: 我在用DataX同步数据(SqlServer)到Hologres时, 数据同步完成后, DataX执行postSql时报连接数据库失败. 可以确定3点: 1.源库读正常 2.目标库写正常 3.目标库写入数据已完成(同步脚本preSql有truncate目标表, 并验证数据同步完成)

工作中用DataX同步数据比较多, 在MySQL和SqlServer互同步时执行postSql正常的, 所以猜测可能是Hologres数据库的连接关闭后, 再次获取和其他数据库有点不一样.

附件有DataX同步的完整日志, 盼大佬回复! 感谢! datax-sync.log

Y-evil commented 1 year ago

DataX项目里没看到有hologreswriter这个组件啊,到是有个hologresjdbcwriter. 我没用过hologresjdbcwriter这个组件, 我看了下hologresjdbcwriter.post的代码猜测问题可能出在DataBaseType这个类或jdbcUrl.replace("postgresql", "hologres")这个逻辑. 日志中报java.lang.ClassNotFoundException: org.postgresql.Driver. 代码中有这样的逻辑String tempJdbcUrl = jdbcUrl.replace("postgresql", "hologres"); 而DataBaseType中 PostgreSQL("postgresql", "org.postgresql.Driver")是这个.

BaseWriter.post()方法中获取数据库链接connection不要使用DBUtil,DBUtil获取链接connection使用DataBaseType获取jdbcUrl,参照prepare()方法中的实现,使用DriverManager.getConnection()的方式.

lpong commented 8 months ago

这么久,这个 bug 还没解决吗