为什么将与网::卡桑德拉::容易和卡桑德拉0.5X行,当我得到一个错误?
题
当使用的Perl模块净::卡桑德拉::易一>使用卡桑德拉接口我使用下面的代码来读取colums从行col[123]
row[123]
在列家族Standard1
:
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
。
我在做什么错了?
解决方案 2
代码工作下卡桑德拉0.6.x如预期的,但在卡桑德拉0.5.x失败。
它显示为如果Net::Cassandra::Easy
仅定位卡桑德拉0.6.x。
升级到卡桑德拉0.6.x解决了这个问题。
其他提示
它看起来像在库中的一个错误:
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;
}
(来自Net::GenThrift::Thrift::BinaryProtocol
)
显然该子被从某处在$value
不是变量库调用,但恒定的标量。我把缺陷报告给作者。
嗯,处理异常在我身上时看起来更像是一个Perl绑定错误。
我相信0.6修复它,因为你的界面确实变了,所以0.6是不是养了节俭的异常了,但节俭的错误依然存在。我已经开了一个JIRA情况下,我们会看到节俭的团队说的只是:
不隶属于 StackOverflow