使用 Perl 模块时 Net::Cassandra::Easy为了与 Cassandra 交互,我使用以下代码从列族 Standard1
中的行 row[123]
读取列 col[123]
:
my $cassandra = Net::Cassandra::Easy->new(keyspace => 'Keyspace1', server => 'localhost');
$cassandra->connect();
my $result = $cassandra->get(['row1', 'row2', 'row3'], family => 'Standard1', byname => ['col1', 'col2', 'col3']);
这按预期工作。
但是,当尝试使用 .. 插入行 row1
时
$result = $cassandra->mutate(['row1'], family => 'Standard1', insertions => { "col1" => "Value to set." });
.. 我收到错误消息 Can't use string ("0") as a SCALAR ref while "strict refs"in use at .../Net/GenThrift/Thrift/BinaryProtocol.pm line 376
。
我做错了什么?
最佳答案
它看起来像是库中的错误:
sub readByte
{
my $self = shift;
my $value = shift;
my $data = $self->{trans}->readAll(1);
my @arr = unpack('c', $data);
$$value = $arr[0]; # <~ line 376
return 1;
}
(来自 <a href="http://cpansearch.perl.org/src/TEODOR/Net-Cassandra-Easy-0.05/lib/Net/GenThrift/Thrift/BinaryProtocol.pm" rel="noreferrer noopener nofollow">Net::GenThrift::Thrift::BinaryProtocol</a>
)
显然,sub 是从库中的某处调用的,其中 $value
不是变量,而是常量标量。我会向作者报告错误。
关于perl - 为什么在使用 Net::Cassandra::Easy 和 Cassandra 0.5x 插入行时出现错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2488783/