UDT在小于3的协议上不可用,请更新config"

时间:2016-03-08 16:17:01

标签: gocql

使用UDT:

注意:cqlsh:show version

[cqlsh 5.0.1 | Cassandra 2.2.1 | CQL spec 3.3.0 | Native protocol v4]

CREATE TYPE fullname (
  firstname text,
  lastname text
);

CREATE TABLE sample (
  id int PRIMARY KEY,
  name frozen <fullname>
);

代码:

type Frozen struct {
    Firstname string `json:"firstname"`
    Lastname  string `json:"lastname"`
}

myobj := &Frozen{
    Firstname: "pony",
    Lastname:  "jim",
}

if err := session.Query(`INSERT INTO sample (id, name) VALUES (?,?)`,
    2, myobj).Exec(); err != nil {
    fmt.Println(err)
}

我明白了:

UDT are not available on protocols less than 3, please update config


更新配置?

1 个答案:

答案 0 :(得分:0)

我将Cassandra更新为3.3并且有效。

错误消息让我误以为在Cassandra 2.2上运行了“Native protocol v4”。

升级到3.3我还必须在创建会话时定义键空间后添加以下内容:
ClusterName.ProtoVersion = 4