所以,问题出在桌子上。这就是我最初创建表的方式:
CREATE TABLE role(
role_id int PRIMARY KEY,
role_name VARCHAR (255) UNIQUE NOT NULL
);
主题中的测试数据如下所示:
./bin/kafka-avro-console-producer --broker-list localhost:9092 --topic role --property schema.registry.url=http://localhost:8081/ --property value.schema='{"type":"record","name":"myRecord","fields": [{"name": "role_id","type": "int"},{"name": "role_name","type": "string"}]}' --key-serializer org.apache.kafka.common.serialization.StringSerializer --value-serializer io.confluent.kafka.serializers.KafkaAvroSerializer --property print.key=true
{"role_id":122, "role_name":"admin"}
{"role_id":123, "role_name":"admin"}
{"role_id":124, "role_name":"admin"}
{"role_id":125, "role_name":"admin"}
{"role_id":126, "role_name":"admin"}
因此,当我的测试数据一次又一次地为role_name字段提供相同的值时,它违反了惟一约束,因此出现了错误。
我都做了什么?
我把桌子掉了。
创建了一个没有唯一键约束的新表,上述数据被毫无问题地推送到PostgreSQL。