0

使用 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


更新配置?

4

1 回答 1

0

我将 Cassandra 更新到 3.3 并且它工作正常。

该错误消息使我误以为在 Cassandra 2.2 上运行“本机协议 v4”是可以的。

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

于 2016-03-08T17:27:10.593 回答