gpt4 book ai didi

Astyanax:引发此异常的简单写入:没有足够的字节来读取组件的值

转载 作者:行者123 更新时间:2023-12-04 05:32:00 24 4
gpt4 key购买 nike

我是astyanax的新手,尝试了一些示例程序并遇到此错误。这是一个简单的编写,看起来像是在做一些基本错误的事情。不使用复合键。

Caused by: InvalidRequestException(why:Not enough bytes to read value of component 0)
at org.apache.cassandra.thrift.Cassandra$batch_mutate_result.read(Cassandra.java:20833)
at org.apache.thrift.TServiceClient.receiveBase(TServiceClient.java:78)
at org.apache.cassandra.thrift.Cassandra$Client.recv_batch_mutate(Cassandra.java:964)
at org.apache.cassandra.thrift.Cassandra$Client.batch_mutate(Cassandra.java:950)
at com.netflix.astyanax.thrift.ThriftKeyspaceImpl$1$1.internalExecute(ThriftKeyspaceImpl.java:120)
at com.netflix.astyanax.thrift.ThriftKeyspaceImpl$1$1.internalExecute(ThriftKeyspaceImpl.java:117)
at com.netflix.astyanax.thrift.AbstractOperationImpl.execute(AbstractOperationImpl.java:56)

这是代码:
    AstyanaxContext<Keyspace> context = new AstyanaxContext.Builder()
.forCluster(CLUSTER_NAME)
.forKeyspace(keySpaceName)
.withAstyanaxConfiguration(new AstyanaxConfigurationImpl()
.setDiscoveryType(NodeDiscoveryType.RING_DESCRIBE)
.setCqlVersion("3.0.0")
.setTargetCassandraVersion("1.2")
)
.withConnectionPoolConfiguration(new ConnectionPoolConfigurationImpl("MyConnectionPool")
.setPort(50825)
.setMaxConnsPerHost(10)
.setSeeds("nodename:50825")
.setConnectTimeout(20000)
)
.withConnectionPoolMonitor(new CountingConnectionPoolMonitor())
.buildKeyspace(ThriftFamilyFactory.getInstance());

context.start();
System.out.println("getting context.. done ");
Keyspace keyspace = context.getEntity();
MutationBatch m = keyspace.prepareMutationBatch();

ColumnFamily<String, String> colFam = new ColumnFamily<String, String>("test",
StringSerializer.get(), StringSerializer.get());

m.withRow(colFam, "abc")
.putColumn("col2", "test1", null);
m.execute();

下表描述了:
CREATE TABLE test (
col1 text PRIMARY KEY,
col2 text,
col3 text
) WITH
bloom_filter_fp_chance=0.010000 AND
caching='KEYS_ONLY' AND
comment='' AND
dclocal_read_repair_chance=0.000000 AND
gc_grace_seconds=864000 AND
read_repair_chance=0.100000 AND
replicate_on_write='true' AND
populate_io_cache_on_flush='false' AND
compaction={'class': 'SizeTieredCompactionStrategy'} AND
compression={'sstable_compression': 'SnappyCompressor'};

最佳答案

我也是Astyanax的新手,遇到了相同的异常(exception)。异常(exception)是由于基于Astyanax Thrift的对象认为列定义应与使用CQL 3将其存储在1.2+中之间不匹配。我学会了指定COMPACT STORAGE,以便以1.2之前的格式创建表让我可以通过基于Thrift的对象与之交互。 FWIW:我正在从源代码构建Astyanax,但是我确实在Maven Central看到了1.56.34。我也会对此进行更新。

CREATE TABLE test (
col1 text PRIMARY KEY,
col2 text,
col3 text
) WITH COMPACT STORAGE AND
...

参见 Working with pre-CQL 3 applications

关于Astyanax:引发此异常的简单写入:没有足够的字节来读取组件的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15446187/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com