2016-05-26 11 views
1

私はカサンドラテーブル内のデータを更新しようとする私は、次のエラーメッセージが表示されます。カサンドラの更新ステートメントは

型「Cassandra.InvalidQueryException」の未処理の例外は

をCassandra.dllで発生しました

追加情報:

01:スライス制限がUPDATE文

にクラスタリング列ではサポートされていません。これは、実際の更新を行います私のコードです

public void updateMeters(List<model> update) 
    { 
     Connect(); 
     // List<int> blabla 
     var statement = session.Prepare("UPDATE csvmeter SET meterid=? where MeterName=? and timeStamp<?"); 
     var tasks = new List<Task>(); 
     foreach (var item in update) 
     { 
      var bind = statement.Bind(update.Select(x => x.MeterId), update.Select(x => x.MeterNumber), DateTime.Now); 
      var resultSetFuture = session.ExecuteAsync(bind); 
      tasks.Add(resultSetFuture); 
     } 
     Task.WaitAll(tasks.ToArray()); 
     CloseConnection(); 
    } 

and Timestamp<?に問題が発生していることがほとんどわかっています。私の主キーの一部です。

これは私のデータベースモデルである:私はMeternameに基づいmeterIDを更新したい

Create table csvmeter (
meterName varchar, 
timeStamp timestamp, 
Value  double, 
meterID  int, 
PRIMARY KEY(meterName, timeStamp)); 

。このメタネームは区別されません。

答えて

0
UPDATE

DELETE文のすべての主キー列を制限しなければならないとのみ許可制限事項は次のとおりです。

  • 任意のパーティション・キーまたはクラスタ化列
  • において一列に単一列=最後のパーティションキー列の制限

CASSANDRA-6237は、Cassandra 3.0の制限事項の一部です。

詳細については、DataStax開発者ブログのこの記事を参照してください。A deep look at the CQL WHERE clause

関連する問題