Нет никакой реальной альтернативы при вводе исключения "JSON" в cqlsh. Не удалось вставить JSON в таблицу Cassandra
Я пытаюсь вставить JSON в таблицу Cassandra, используя оболочку и код Java, но получая эту ошибку: нет жизнеспособной альтернативы на входе JSON
Версии Кассандры: [cqlsh 4.1.1 | Cassandra 2.0.12 | CQL spec 3.1.1 | Транзитный протокол 19.39.0] Сценарий создания таблицы CREATE TABLE пользователи (id int PRIMARY KEY, age int, текст состояния); Вставить скрипт INSERT INTO users JSON '{"id": 888, "age": 42, "state": "TX"}'; Аналогичный код для вставки с использованием Java: String cqlStatement = "INSERT INTO users JSON '{\" id\": 888, \" age\": 21, \" state\": \" TX\"}'"; cassandraTemplate.execute(cqlStatement);Получение исключения в обоих случаях: Отсутствие жизнеспособной альтернативы на входе "JSON" 5. Нужно ли мне что-то настраивать в Cassandra для принятия команды JSON в терминале?
Не возможно с вашей версией 2.0.12. Похоже, Cassandra 2.2 - это минимальная версия, которая поддерживает "INSERT INTO users JSON...".
При значении <2.2 альтернативы фиксируются здесь:
Найден ответ на вопрос, который работает в Cassandra 2.0.12, а также
Предпосылки:
Миниатюрная версия JSON для вставки в таблицу Ссылка http://www.httputility.net/json-minifier.aspx может использоваться для минимизации JSON (зайдите на этот сайт и скопируйте JSONсодержимое, минимизировать и копировать результат) Проверьте любую одинарную цитату ('), замените ее двойной кавычкой (' ') Убедитесь, что строка не заканчивается JSon следует вставить в текстовый столбец
В данном примере была создана таблица с именем employee, которая имеет 4 столбца. Eid целочисленное значение, ename текстовое значение, ephonenumber как список текста и eaddress как текст. eaddress - это столбец, в который должен быть вставлен JSON
Шаги для выполнения:
Создать таблицу позволяет сказать, что сотрудник имеет 4 столбца eid, ename, ephonenumber, eaddress с первичным ключом eidКоманда для выполнения в терминале CQL:
create table employee (eid int, ename text, ephonenumber list, eaddress text, primary key (eid));
Вставьте строку в таблицу сотрудников с ephonenumber как список и eaddress как json
Команда для выполнения на CQL-терминале
(1, 'Sourav', ['7773330000', '5550003333'], '{"office": "197 - ITPL - Bangalore", "home": "196 -Thubarahalli - Бангалор "} ');
Проверьте с помощью select query, если строка JSON была вставленаВыберите * у сотрудника