CQL INSERT 失败,并显示“SyntaxException:第 1:32 行在输入‘1’处没有可行的替代方案”

问题描述 投票:0回答:1

这是我的表格结构:

CREATE TABLE test.messages_by_channel (
    channel_id int,
    message_id timeuuid,
    message text,
    user_id int,
    PRIMARY KEY (channel_id, message_id)
) WITH CLUSTERING ORDER BY (message_id DESC)
    AND bloom_filter_fp_chance = 0.01
    AND caching = {'keys': 'ALL', 'rows_per_partition': 'ALL'}
    AND comment = ''
    AND compaction = {'class': 'SizeTieredCompactionStrategy'}
    AND compression = {'sstable_compression': 'org.apache.cassandra.io.compress.LZ4Compressor'}
    AND crc_check_chance = 1.0
    AND dclocal_read_repair_chance = 0.0
    AND default_time_to_live = 0
    AND gc_grace_seconds = 864000
    AND max_index_interval = 2048
    AND memtable_flush_period_in_ms = 0
    AND min_index_interval = 128
    AND read_repair_chance = 0.0
    AND speculative_retry = '99.0PERCENTILE';

当我运行这个时:

insert into messages_by_channel(1, now(), "test", 2);

我收到此错误:

SyntaxException: line 1:32 no viable alternative at input '1'

如何运行此插入查询并生成唯一的 timeuuid ?

cassandra nosql
1个回答
0
投票

如错误

SyntaxException
所示,您的
INSERT
失败,因为语法不正确。

您需要在 CQL 语句中枚举要更新的列。简化的语法格式为:

INSERT INTO table_name (column_list)
    VALUES (values_to_insert)

在您的情况下,正确的语法是:

INSERT INTO messages_by_channel (channel_id, message_id, message, user_id)
    VALUES (1, NOW(), 'test', 2)

请注意,消息文本用单引号 (

'
) 括起来,而不是双引号 (
"
)。

您需要枚举正在插入的列,因为 Cassandra 具有稀疏存储——未分配值的列不会存储在磁盘上。干杯!

© www.soinside.com 2019 - 2024. All rights reserved.