删除旧模式后无法在 Kafka 中添加新模式

Posted

技术标签:

【中文标题】删除旧模式后无法在 Kafka 中添加新模式【英文标题】:Can't add a new schema in Kafka after deleting the old one 【发布时间】:2021-12-16 18:49:27 【问题描述】:

我也在尝试为键使用正确的模式。默认情况下,它被创建为:

"subject":"AVROTEST-key","version":1,"id":60,"schema":"\"string\""

但我想要这样:

"subject":"AVROTEST-key","version":1,"id":60,"schema": "\"type\":\"record\",\"name\":\"AVROTEST\",\"fields\":[\"name\":\"key\",\"type\":\"long\"]"

由于兼容性问题,我尝试将其完全删除并添加一个新的。我已经删除了它使用

curl -X DELETE http://XXXXXX.XXXXXX:1234/subjects/AVROTEST-key/versions/1

没有其他版本,删除后尝试GET时出现404错误,表示删除成功。但是当我尝试注册一个新架构时,我得到了这个错误:

"error_code":409,"message":"正在注册的架构不兼容 使用较早的架构"

如果没有架构,它怎么会与早期的架构不兼容?我错过了什么?

这就是我注册新架构的方式:

curl -X POST -H "Content-Type: application/vnd.schemaregistry.v1+json" --data '"schema": "\"type\":\"record\",\"name\":\"AVROTEST\",\"fields\":[\"name\":XXXXXX.XXXXXXXX:1234/subjects/AVROTEST-key/versions

【问题讨论】:

1) 您使用的是什么版本的注册表? 2) 告诉我们更多关于 AVROTEST 主题的信息。是否有制片人积极给它写信?为什么不能更改主题名称?您应该更改主题名称,因为如果您没有以其他方式清除该主题,则会使该主题中的所有现有记录无效。 【参考方案1】:

看起来还有另一个我不知道的架构版本。实际上是一个有趣的错误,我应该删除所有版本,而不是 [1]。于是输入命令

curl -X DELETE http://XXXXXX.XXXXXX:1234/subjects/AVROTEST-key/versions/

解决了我的问题。所有以前的模式都被删除。但请注意,新模式不会注册为版本 [1]。它将增加最新的架构 id。

【讨论】:

以上是关于删除旧模式后无法在 Kafka 中添加新模式的主要内容,如果未能解决你的问题,请参考以下文章

在 DOM 中添加新元素后,该元素无法识别旧脚本

AVRO 模式可选字段不兼容

iPad添加视图然后告诉它根据方向模式调整大小?

如何从 Git 中的未暂存更改中删除说“旧模式 100755 新模式 100644”的文件?

text 如何从Git中的非分段更改中删除说“旧模式100755新模式100644”的文件?

无法从外部存储中删除位图