0

在我的开发系统中将 cassandra 从 3.11.4 迁移到 4.0 beta 版本时,我遇到了一个问题。

ERROR [main] 2020-07-31 15:34:36,099 CassandraDaemon.java:800 - Exception encountered during startup
java.lang.IllegalArgumentException: Compact Tables are not allowed in Cassandra starting with 4.0 version. Use `ALTER ... DROP COMPACT STORAGE` command supplied in 3.x/3.11 Cassandra in order to migrate off Compact Storage.
        at org.apache.cassandra.schema.SchemaKeyspace.fetchTable(SchemaKeyspace.java:960)
        at org.apache.cassandra.schema.SchemaKeyspace.fetchTables(SchemaKeyspace.java:919)
        at org.apache.cassandra.schema.SchemaKeyspace.fetchKeyspace(SchemaKeyspace.java:878)
        at org.apache.cassandra.schema.SchemaKeyspace.fetchKeyspacesWithout(SchemaKeyspace.java:869)
        at org.apache.cassandra.schema.SchemaKeyspace.fetchNonSystemKeyspaces(SchemaKeyspace.java:857)
        at org.apache.cassandra.schema.Schema.loadFromDisk(Schema.java:102)
        at org.apache.cassandra.schema.Schema.loadFromDisk(Schema.java:91)
        at org.apache.cassandra.service.CassandraDaemon.setup(CassandraDaemon.java:241)
        at org.apache.cassandra.service.CassandraDaemon.activate(CassandraDaemon.java:661)
        at org.apache.cassandra.service.CassandraDaemon.main(CassandraDaemon.java:778)

错误说要删除 COMPACT STORAGE ,但在我的数据库中没有启用 COMPACT STORAGE 的表。请提出任何解决方案!

4

1 回答 1

4

正如异常所暗示的那样,即使您不知道,您也有一个或多个表仍在使用已弃用的 Thrift 存储格式。

试试这个(粗略而简单的)命令:

$ cqlsh <node_ip> -e "DESCRIBE FULL SCHEMA" | egrep "CREATE TABLE|COMPACT STORAGE"

这将列出集群中的所有表,并指示它们中的任何表是否仍具有紧凑存储支持。如果您启用了身份验证,则需要相应地对其进行修改以包含数据库凭据。干杯!

于 2020-08-01T00:48:41.120 回答