Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cassandra/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用gocql将用户定义类型的数组插入Cassandra_Go_Cassandra_Gocql - Fatal编程技术网

使用gocql将用户定义类型的数组插入Cassandra

使用gocql将用户定义类型的数组插入Cassandra,go,cassandra,gocql,Go,Cassandra,Gocql,我在Cassandra中有一个UDT,我有一个在其模式中包含这些UDT数组的表。以下是一个示例: CREATE TYPE keyspace.test_type( x float, y float) 在我的模式中,我有 CREATE TABLE test_table( key text, test_array list<FROZEN <test_type>>, PRIMARY KEY (key)) 然后我有一个函数,基本

我在Cassandra中有一个UDT,我有一个在其模式中包含这些UDT数组的表。以下是一个示例:

CREATE TYPE keyspace.test_type(
    x float, 
    y float)
在我的模式中,我有

 CREATE TABLE test_table(
     key text,
     test_array list<FROZEN <test_type>>,
     PRIMARY KEY (key))
然后我有一个函数,基本上返回这个测试类型的列表:
[]测试类型
,我们称它为
我的数组

当我尝试使用gocql进行插入时,如下所示:

 err := gocql.Session.Query('INSERT into test_table (key,test_array)
                             VALUES (?,?)', 'key', my_array).Exec()
我得到一堆空值,而不是数组。基本上,test_类型没有正确映射到我创建的UDT,这是我的假设


本质上,我的问题是如何将go中的结构映射到udt,以便正确识别类型

也许这不重要,但我已经读到它不重要了

CREATE TABLE test\u TABLE(
关键文本,
测试数组列表>,
主键(键))

但是

CREATE TABLE test\u TABLE(
关键文本,
测试数组列表,
主键(键))

表的正确定义。我没有办法尝试你的代码,如果它改变了什么,请告诉我

我读到的另一件事是 我认为您应该在Cassandra中定义自定义类型,因为您有一个自定义类型列表。

Per:

通过重命名字段以使其导出,问题得以解决。这样gocql就可以看到数据类型x&y


只需将
x
重命名为
x
并将
y
重命名为
y
。你说得对,这是我的语法错误。看看我贴的答案。我建议的改变正确地将数据写入了Cassandra:)我已经看到了。我现在怀疑的是类型的定义。为什么在Cassandra中将x和y声明为float的test_类型?这不是戈朗的地图吗?你也可以。然而,在我的用例中,我希望将它表示为一个结构,而不是一个映射。
 err := gocql.Session.Query('INSERT into test_table (key,test_array)
                             VALUES (?,?)', 'key', my_array).Exec()