【问题标题】:expected 8 or 0 byte long (4)预期 8 或 0 字节长 (4)
【发布时间】:2019-09-22 15:26:48
【问题描述】:

我是 cassandra 的新手。我正在使用最新版本的 cassandra。在新添加的表中插入数据时,出现“预期为 8 或 0 字节长 (4)”的异常。我在 .net 中使用 CassandracsharpDriver .我的代码和查询是

代码块:

Query : string query =
   "INSERT INTO test_table(Id,Name,Date,CreatedOn) values (?,?,?,?)";

BatchStatement("_test", query, 394741470, "test", "2019-05-06");

public void BatchStatement(string keySpace, string query,params object[] parameter)
    {
        try
        {
            BatchStatement objBatchStatement = new BatchStatement();
            PreparedStatement statement = PrepareQueryStatement(keySpace, query);
            objBatchStatement.Add(statement.Bind(parameter));
            var session = cluster.Connect(keySpace);
            //objBatchStatement.ConsistencyLevel
            // Execute the batch
            // RowSet row = session.Execute(query);
            RowSet row = session.Execute(objBatchStatement);

        }            
        catch (Exception ex)
        {
            Console.WriteLine("Excpetion occured during batch operation method Name BatchStatement error : " + ex.ToString());
        }

    }

//session.Execute(objBatchStatement); code is throwing excpetion expected 8 or 0 byte long (4)

谢谢

【问题讨论】:

  • 通过简单的查询,它可以工作,但不能使用 Batchstatement。我必须在 cassandra 中插入多条记录。
  • 如果CreatedOn 有默认值,则应在查询中跳过它。 "INSERT INTO test_table(Id,Name,Date) values (?,?,?)";

标签: c# cassandra


【解决方案1】:

Guess:这是一个典型的 Value 类型推断案例。 您正在使用查询:

INSERT INTO test_table(Id,Name,Date,CreatedOn) values (?,?,?,?)";

BatchStatement("_test", query, 394741470, "test", "2019-05-06");

这里,394741470 是 C# 中的 int。因此驱动程序将其序列化为 CQL int(4 字节),但服务器需要 CQL bigint(8 字节)。解决方法是指定正确的类型:

您可以尝试以下方法:

BatchStatement("_test", query, 394741470L, "test", "2019-05-06");

或者它可能是日期问题。你的日期是字符串。尝试使用日期时间。

BatchStatement("_test", query, 394741470L, "test", Convert.ToDateTime("2019-05-06"));

【讨论】:

    【解决方案2】:

    你必须检查 Cassandra 表的数据类型并使用对应的 java 数据类型,并在声明变量以传递列的值时在 java 代码中使用它。

    示例:在 Cassandra bigint 中,然后在 java 中定义 long 而不是 int。

    检查这个type mapping between Cassandra vs Java

    【讨论】:

      猜你喜欢
      • 2019-11-01
      • 2014-12-28
      • 2017-11-30
      • 2019-05-06
      • 2014-08-29
      • 2020-09-09
      • 1970-01-01
      • 2013-02-05
      • 2017-12-31
      相关资源
      最近更新 更多