我试图通过kafka接收器连接器将数据加载到postgres表,但出现以下错误:
原因:org.apache.kafka.connect.errors.connectexception:无法更改以添加缺少的字段sinkrecordfield{schema=schema{string},name='a\u abbrev',isprimarykey=false},因为它不是可选的并且没有默认值
postgres db中的表已经有字段a_abbrev,但是现在确定为什么会出现缺少字段错误。
有没有人面临类似的问题?
下面是我的接收器连接器配置:
connector.class=io.confluent.connect.jdbc.JdbcSinkConnector
table.name.format=AGENCY
connection.password=passcode
topics=AGENCIES
tasks.max=1
batch.size=10000
fields.whitelist=A_ID, A_NAME, A_ABBREV
connection.user=pmmdevuser
name=partner5-jdbcSinkConnector
connection.url=jdbc:postgresql://aws-db.sdfdgfdrwwisc.us-east- 1.rds.amazonaws.com:3306/pmmdevdb?currentSchema=ams
insert.mode=upsert
pk.mode=record_value
pk.fields=A_ID
auto.create=false
我正在使用liquibase脚本创建表,下面是通过liquibase脚本创建的postgres db的create查询:
"CREATE TABLE gds.agency
(
a_id integer NOT NULL,
a_name character varying(100) COLLATE pg_catalog."default" NOT NULL,
a_abbrev character varying(8) COLLATE pg_catalog."default" NOT NULL,
source character varying(255) COLLATE pg_catalog."default" NOT NULL DEFAULT 'AMS'::character varying,
CONSTRAINT pk_agency PRIMARY KEY (a_id),
CONSTRAINT a_abbrev_uk1 UNIQUE (a_abbrev)
)"
1条答案
按热度按时间eni9jsuy1#
根据我的经验,这意味着接收器的字段定义与源表/数据库的字段定义不匹配。确保字段定义匹配。检查接收器连接器试图写入目标数据库的单个记录。您应该能够在堆栈跟踪的调试模式下看到这个insert语句。获取该查询并手动运行它,以便更清楚地了解数据库中的错误。