使用datax同步数据报错信息提示如下:
-
配置的ip/port/database/jdbc错误,无法连接。———这个仔细检查了也没有啥问题:json中配置:jdbc:postgresql://localhost:5432/cnop
-
配置的username/password错误,鉴权失败。请和DBA确认该数据库的连接信息是否正确。——用户名和密码也没问题。
-
具体错误信息为:java.sql.SQLException: No suitable driver found for jdbc:postgresql://localhost:5432/database。——数据库驱动已更换为42.2.5,同样的驱动在dbeaver上可用,在datax上不可用。
最后发现问题竟然是json中"name": "mysqlreader",
没有改为"name": "postgresreader",
,也就是name要和使用的数据库相对应。程序是读到这个name的值,才去plugin中找对应的文件夹名字,进而读取数据库驱动。所以这里面有两个问题:
- 提示信息信息非常不准确;
- 工具设计者没有考虑到正常使用者的思维逻辑,我们一般连接数据库就是用户名、密码,再就是url信息和驱动。不应该让使用者通过name去找对应的驱动,这不符合逻辑。
{
"job": {
"content": [
{
"reader": {
"name": "mysqlreader",
"parameter": {
"column": [
"datadate",
"citycode",
"p_date",
"importtime",
"rid",
"datamonth",
"p_provincecode",
"kpijson"
],
"connection": [
{
"jdbcUrl": ["jdbc:postgresql://localhost/database"],
"table": ["t_bg_aaupowerofmacrokpi"]
}
],
"password": "*****",
"username": "postgres"
}
},
"writer": {
"name": "mysqlwriter",
"parameter": {
"column": [
"datadate",
"citycode",
"p_date",
"importtime",
"rid",
"datamonth",
"p_provincecode",
"kpijson"
],
"connection": [
{
"jdbcUrl": "jdbc:postgresql://127.0.0.1:5432/test",
"table": ["t_bg_aaupowerofmacrokpi"]
}
],
"password": "**********",
"username": "test"
}
}
}
],
"setting": {
"speed": {
"channel": "1"
}
}
}
}