2016-12-12 2 views
2

Здесь я вижу много примеров создания таблиц с использованием ограничения NOT NULL. По иронии судьбы, я не могу сделать то же самое.Cassandra: Невозможно использовать ограничение «NOT NULL» при создании таблицы

Это команда CQL я использую:

CREATE TABLE activities_dev (activity_id uuid ,actor_id bigint NOT NULL, actor_appid bigint NOT NULL, item_id text NOT NULL, verb text NOT NULL,viewer_id bigint NOT NULL,viewer_appid bigint NOT NULL, ts timestamp, PRIMARY KEY(activity_id,actor_id,actor_appid,item_id,verb)); 

, но это ошибка, я получаю:

SyntaxException: line 1:62 mismatched input 'NOT' expecting ')' (...activities_dev(activity_id uuid, actor_id integer [NOT] NULL...) 

Что я делаю неправильно?

+0

Проще говоря, вы используете синтаксис, которого нет в Cassandra. – Aaron

ответ

0

Прежде всего, если вы изменили этот столбец как NOT NULL, убедитесь, что все поля внутри этого столбца имеют значение.

+0

Я не изменяю столбец уже созданной таблицы. Я создаю эту таблицу, но не могу из-за указанной ошибки. – arshellium

+0

разверните предложение, запустите sql-скрипт без NOT NULL, а затем измените таблицу, добавив NOT NULL для указанных столбцов. –

+0

", затем измените таблицу, добавив NOT NULL для указанных столбцов« да, это не работает в Кассандре. – Aaron

2

В ключе Cassandra NOT NULL не поддерживается.

Для столбцов первичного ключа cassandra автоматически обрабатывает это. При попытке вставить нуль в любое значение первичного ключа Кассандры выбросит исключение,

Invalid null value in condition for column

0

Null колонка в Кассандре не означает пустой столбец.

Кассандра использует нули для маркировки удаленных столбцов: вы можете удалить один или несколько столбцов строки в Cassandra.

Этот маркер с меткой, называемый надгробным камнем, используется для согласования данных локально и между узлами (Commitlog, memtables, SStables), а в реплицированных пространствах ключей предотвращает воскрешение данных (например, о реплицированном удалении) (см. this article).

В этом контексте имеет смысл не допускать предложение NOT NULL в синтаксисе CREATE TABLE и ALTER TABLE CQL.

Alain

Смежные вопросы