问题描述
当前ksql的状态使得很难理解哪个版本支持/拒绝/强制/可选的功能。没有明确的版本引用的Confluent文档并不能使它更好,所以我被困在这里:
create table gtest (ID varchar PRIMARY KEY) with (kafka_topic = 'g',value_format='avro');
创建语法错误
line 1:32: mismatched input 'PRIMARY' expecting {',',')'}
Statement: create table gtest (ID varchar PRIMARY KEY) with (kafka_topic = 'g',value_format='avro');
Caused by: line 1:32: mismatched input 'PRIMARY' expecting {',')'}
Caused by: org.antlr.v4.runtime.InputMismatchException
可用主题创建,使用模式创建,可以从oracle数据库导入数据,可以创建流,一切都很好。但是,与我找到的所有文档相反,不会创建该表。我在这里想念什么?
我正在使用Confluent 5.5.1,它是从tarball构建的,而ksql 0.11.0是从confluentinc的docker映像构建的。
模式:
{
"subject": "g-key","version": 1,"id": 1,"schema": "{\"type\":\"record\",\"name\":\"ConnectDefault\",\"namespace\":\"io.confluent.connect.avro\",\"fields\":[{\"name\":\"ID\",\"type\":\"string\"}]}"
}
{
"subject": "g-value","id": 6,\"fields\":[{\"name\":\"GT_ID\",\"type\":{\"type\":\"int\",\"connect.type\":\"int8\"}},{\"name\":\"BARCODE\",\"type\":[\"null\",\"string\"],\"default\":null},{\"name\":\"LP_ID\",\"long\"],{\"name\":\"IN_G_ID\",{\"name\":\"RS\",\"type\":\"string\"},{\"name\":\"NSP\",{\"name\":\"EINT\",{\"name\":\"EINDATE\",\"type\":{\"type\":\"long\",\"connect.version\":1,\"connect.name\":\"org.apache.kafka.connect.data.Timestamp\",\"logicalType\":\"timestamp-millis\"}},{\"name\":\"MKZ\",{\"name\":\"AKM\",\"type\":\"int\"},{\"name\":\"AKT\",{\"name\":\"LZTB\",{\"name\":\"TE\",{\"name\":\"QU\",{\"name\":\"ZWIZ\",{\"name\":\"ENDL\",{\"name\":\"FREIP\",{\"name\":\"HRLZ\",{\"name\":\"PERFZ\",{\"name\":\"EINLO\",{\"type\":\"long\",\"logicalType\":\"timestamp-millis\"}],{\"name\":\"UMKJN\",{\"name\":\"KOLR\",\"int\"],{\"name\":\"LA_ID\",{\"name\":\"VIEW_B\",\"default\":null}]}"
}
欢迎提示!
解决方法
CP的当前版本为5.5.1,并且documentation说它具有kqslDB v0.7.1 但是从ksqlDB v0.10开始可以使用'PRIMARY KEY'语法