删除旧模式后无法在 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 中添加新模式的主要内容,如果未能解决你的问题,请参考以下文章
如何从 Git 中的未暂存更改中删除说“旧模式 100755 新模式 100644”的文件?