Ответ 1
"Нет жизнеспособной альтернативы" означает, что тип данных для некоторого ключа не соответствует схеме для столбца семейства столбцов, к сожалению, он явно не говорит об этом в сообщении об ошибке.
В моем случае тип данных для мета:
map<text,text>
по этой причине ничто не считалось плохим значением во время ввода. Я исправил проблему, заменив None на пустой dict до вставки:
if current['meta'] is None:
current['meta'] = dict()
Драйвер CQL принимает пустое значение dict как новое значение для типа карты, в то время как None не разрешено, хотя запрос в столбце карты возвращает None, если он пуст.
Возврат None и не принятие None не чувствовал себя интуитивно понятным, поэтому позже я решил создать пользовательскую оболочку для cursor.fetchone(), которая возвращает таблицу столбцов вместо списка столбцов, а также проверяет, соответствуют ли MapType, ListType или SetType вернул None. Если есть значения None, он заменяет их пустыми dict(), list() или set(), чтобы избежать проблем, подобных тем, которые были у меня при вставке измененных данных обратно в Cassandra. Кажется, это работает хорошо.