net :: cassandra :: easyおよびcassandra 0.5xに行を挿入するときにエラーが発生するのはなぜですか?

StackOverflow https://stackoverflow.com/questions/2488783

  •  21-09-2019
  •  | 
  •  

質問

Perlモジュールを使用する場合 Net :: Cassandra :: Easy Cassandraとインターフェイスするには、次のコードを使用して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

このコードは、Cassandra 0.6.xで予想どおりに機能しますが、Cassandra 0.5.xでは失敗します。

まるでように見えます Net::Cassandra::Easy Cassandra 0.6.xのみをターゲットにしています。

Cassandra 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はもはやThriftの例外を提起していませんが、Thriftのバグは残ります。私はJiraのケースを開きました、私たちはそれについてThriftチームが言っていることを見る:

https://issues.apache.org/jira/browse/thrift-758

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top