【发布时间】:2019-03-12 10:35:17
【问题描述】:
我正在测试 JDBC Sink 连接器以将记录从 Kafka 转储到 PostgreSQL。这是连接器配置:
{
"name": "jdbc-sink-postgresql-1",
"config": {
"connector.class": "io.confluent.connect.jdbc.JdbcSinkConnector",
"tasks.max": "1",
"topics": "role",
"connection.url": "jdbc:postgresql://localhost:5432/postgres?user=&password=",
"auto.create": "false",
"insert.mode": "upsert",
"mode":"incrementing",
"table.name.format":"role",
"pk.mode":"record_value",
"pk.fields":"role_id"
}
}
当我运行连接器时,出现以下异常:
java.sql.BatchUpdateException: Batch entry 1 INSERT INTO "role" ("role_id","role_name") VALUES (123,'admin') ON CONFLICT ("role_id") DO UPDATE SET "role_name"=EXCLUDED."role_name" was aborted.
Call getNextException to see the cause.
at org.postgresql.jdbc2.AbstractJdbc2Statement$BatchResultHandler.handleError(AbstractJdbc2Statement.java:2778))
关于我在这里缺少什么的任何指针?如果需要更多信息,请告诉我。
【问题讨论】:
-
你能确认你的表名和模式是正确的吗?
-
@Giorgos Myrianthous - 感谢您的快速回复。表和主题的名称是角色。架构名称是公共的,数据库名称是 postgres。
-
你能不能尝试运行 INSERT INTO "role" ("role_id","role_name") VALUES (123,'admin') ON CONFLICT ("role_id") DO UPDATE SET "role_name"=EXCLUDED ."role_name" 看看你的数据库会发生什么?
-
另外,你运行的是哪个 Kafka 版本?
-
这是我注意到问题后做的第一件事,它运行良好,没有任何问题。我正在运行融合的 Kafka 4.0.0
标签: postgresql apache-kafka apache-kafka-connect