问题描述
尝试使用Kafka JDBC接收器复制数据库时出现问题。当我将服务器运行到具有Array数据类型的表时,会出现此错误
...
Caused by: org.apache.kafka.connect.errors.ConnectException: null (ARRAY) type doesn't have a mapping to the SQL database column type
...
我想保留相同的数组条件,并且不想像我对SQL Server所做的那样将其转换为字符串(因为SQL Server不允许数组数据类型)。
这是我的连接配置:
{"name" :"pgsink_'$topic_name'","config":{"connector.class":"io.confluent.connect.jdbc.JdbcSinkConnector","tasks.max":"1","topics":"'$table'","connection.url":"jdbc:postgresql://","connection.user":"","connection.password":"","transforms":"unwrap","transforms.unwrap.type": "io.debezium.transforms.ExtractNewRecordState","transforms.unwrap.drop.tombstones": "false","delete.handling.mode":"drop","auto.create":"true","auto.evolve":"true","insert.mode":"upsert","pk.fields":" '$pk'","pk.mode":"record_key","delete.enabled":"true","destination.table.format":"public.'$table'","connection.attempts":"60","connection.backoff.ms":"100000"
}}
我的Kafka来源来自Debezium,因为我想保留相同的数据类型,所以我没有将SMT放入我的来源。这是源配置:
{
"name":"pg_prod","config":{
"connector.class":"io.debezium.connector.postgresql.PostgresConnector","plugin.name":"wal2json_streaming","database.hostname":"","database.port":"","database.user":"","database.password":"","database.dbname":"","database.server.name":"","database.history.kafka.bootstrap.servers": "","database.history.kafka.topic": "","transforms":"unwrap,reroute","table.whitelist":"public.table","transforms.unwrap.type":"io.debezium.transforms.ExtractNewRecordState","transforms.unwrap.delete.handling.mode": "drop","decimal.handling.mode":"double","time.precision.mode":"connect","transforms.reroute.type":"org.apache.kafka.connect.transforms.RegexRouter","transforms.reroute.regex":"postgres.public.(.*)","transforms.reroute.replacement":"$1","errors.tolerance": "all","errors.log.enable":true,"errors.log.include.messages":true,"kafkaPartition": "0","snapshot.delay.ms":"1000","schema.refresh.mode":"columns_diff_exclude_unchanged_toast"
}
}
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)