ожидается 8 или 0 байт (4) - PullRequest
0 голосов
/ 04 мая 2019

Я новичок в cassandra. Я использую последнюю версию cassandra. Я получаю исключение "ожидается 8 или 0 байт (4)" при вставке данных во вновь добавленную таблицу. Я использую CassandracsharpDriver в .net,Мой код и запрос

Блок кода:

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)

Спасибо

1 Ответ

2 голосов
/ 04 мая 2019

Угадайте: это классический случай вывода типа Value. Вы используете запрос:

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

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

Здесь 394741470 - это int в C #. Таким образом, драйвер сериализует его как CQL int (4 байта), но сервер ожидает CQL bigint (8 байтов). Исправление - указать правильный тип:

Вы можете попробовать следующее:

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

ИЛИ это может быть проблема с датой. Ваша дата - строка Попробуйте использовать DateTime.

BatchStatement("_test", query, 394741470L, "test", Convert.ToDateTime("2019-05-06"));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...