Cassandra alter column type:哪些类型兼容?

Cassandra alter column type: which types are compatible?

关于无法更改列类型的一些示例,互联网上有一些不完整的信息。例如,在 DataStax site 中提到:

或者,例如,提到 here 不能将 uuid 转换为 timeuuid。根据我的个人经验,我无法将 text 更改为 timestamp(我们将日期以 ISO8601 格式存储为文本,这是项目时间表早期的一个不幸决定)。

但是,我找不到关于哪些类型可以转换为哪些类型,或者至少 不能 可以转换为哪些类型的完整描述。有人知道吗?

好问题!我不得不承认,我也对缺乏关于这方面的详尽文档感到有点惊讶。你的问题激发了我做一些调查和 blog about it

基本上,这是 Cassandra 兼容的 CQL 类型的完整列表(使用 Cassandra 2.2.0)

  • ascii -> blob、文本、varchar
  • bigint -> blob、时间戳、varint
  • int -> blob,varint
  • text -> blob, varchar
  • 时间戳 -> bigint、blob、varint
  • timeuuid -> blob,UUID
  • varchar -> blob,文本

备注:

  • blob 里面有很多,因为 任何东西 都可以转换成 blob。
  • cqlsh 允许您将 varint 转换为新的日期类型,但这是一个错误 (CASSANDRA-10027)。不要真的去尝试。

2020 年答案:

此功能似乎已被完全删除。 The version 6.8 documentation 状态:

Cannot change the data type of a column.