插入新列时出现 Cassandra 数据库问题

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

我刚刚安装了 Cassandra 数据库,因为正如我所见,它提供了在表中动态创建新列的功能,而无需更改它 但是当我制作一个虚拟插入时:

INSERT INTO mytable (id, name, age, description) VALUES (uuid(), 'John Doe', 25, 'Test');

如果 mytable 有 id、name、age 并且没有描述列,它会返回错误:

InvalidRequest: Error from server: code=2200 [Invalid query] message="Undefined column name description in table mykeyspace.mytable"

不是应该在mytable中动态创建描述列吗?

error-handling cassandra multiple-columns
2个回答
0
投票

不是应该在mytable中动态创建描述列吗?

不。人们普遍误解 Cassandra 是“无模式”的,而实际上它确实需要并强制执行模式。最初,Apache Cassandra 支持无模式键/值方法来表示数据,但现在已经有好几年了。

在您的情况下,您需要定义与此类似的表:

CREATE TABLE mykeyspace.mytable (
    id UUID,
    name TEXT,
    age INT,
    description TEXT,
    PRIMARY KEY(id)
);

尽管说实话,除非您打算通过

id
(UUID)查询该数据,否则使用
PRIMARY KEY(name,id)
的主键定义可能是更好的方法。这将允许通过
name
列进行查询。


0
投票

如果不存在

description
列,它不会在
mytable
内自动为您创建它。

你可以做,

ALTER TABLE mytable ADD description TEXT;

并且带有

description
列的 INSERT 将再次开始工作。

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