Cassandra改变列类型:哪些类型兼容?

时间:2015-08-07 14:37:15

标签: cassandra cql cql3

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

  • 更改群集列的类型。
  • 更改其上的列 索引已定义。

或者,例如,提到here您无法将new UploadFileToServer().execute("filepath/filename"); 转换为<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="@color/view_background" android:orientation="vertical" android:padding="10dp" > <TextView android:id="@+id/txtPercentage" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" android:layout_marginBottom="15dp" android:layout_marginTop="15dp" android:textColor="@color/txt_font" android:textSize="30dp" /> <ProgressBar android:id="@+id/progressBar" style="?android:attr/progressBarStyleHorizontal" android:layout_width="fill_parent" android:layout_height="20dp" android:layout_marginBottom="35dp" android:visibility="gone"/> <Button android:id="@+id/btnUpload" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" android:background="@color/btn_bg" android:paddingLeft="20dp" android:paddingRight="20dp" android:text="Confirm" android:textColor="@color/white" android:layout_marginBottom="20dp"/> </LinearLayout> 。根据我的个人经验,我无法将uuid更改为timeuuid(我们将ISO8601格式的日期存储为文本,这是项目时间线早期的一个不幸决定。)

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

2 个答案:

答案 0 :(得分:5)

好问题!我不得不承认,我对这个缺乏完整的文档感到有点惊讶。你的问题激励我做一些调查,blog about it也是如此。

基本上,这里是Cassandra兼容的CQL类型(使用Cassandra 2.2.0)的综合列表:

  • ascii - &gt; blob,text,varchar
  • bigint - &gt; blob,timestamp,varint
  • int - &gt; blob,varint
  • 文字 - &gt; blob,varchar
  • 时间戳 - &gt; bigint,blob,varint
  • timeuuid - &gt; blob,UUID
  • varchar - &gt; blob,文字

注意:

  • blob在那里很多,因为任何都可以转换为blob。
  • cqlsh允许您将varint转换为新的日期类型,但这是一个错误(CASSANDRA-10027)。实际上不要尝试。

答案 1 :(得分:1)

2020年答案:

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

无法更改列的数据类型。