无法在cassandra-cli中创建键空间

时间:2012-06-04 06:56:37

标签: cassandra

我有一个简单的单节点cassandra设置(1.1.0)(默认设置)。每当我尝试在cassandra-cli中创建一个键空间时,我都会收到错误: [默认@未知]创建密钥空间税; org.apache.thrift.transport.TTransportException

在cassandra服务器日志中,异常堆栈跟踪: 错误12:15:04,722线程中的异常线程[MigrationStage:1,5,main]

java.lang.AssertionError
    at org.apache.cassandra.db.DefsTable.updateKeyspace(DefsTable.java:441)
    at org.apache.cassandra.db.DefsTable.mergeKeyspaces(DefsTable.java:339)
    at org.apache.cassandra.db.DefsTable.mergeSchema(DefsTable.java:269)
    at org.apache.cassandra.service.MigrationManager$1.call(MigrationManager.java:214)

我尝试删除./var/lib/cassandra/data中的内容并重新启动服务器和我的mac,但仍然遇到同样的问题。

2 个答案:

答案 0 :(得分:5)

看起来系统密钥空间已损坏。从

中删除数据文件
  • 的/ var / lib中/卡桑德拉/数据
  • 的/ var / lib中/卡桑德拉/ commitlog
  • 的/ var / lib中/卡桑德拉/ saved_caches

并重新启动cassandra服务器修复了该问题。 (以上目录在$ CASSANDRA_HOME / conf / cassandra.yaml中定义)

答案 1 :(得分:3)

以下是将键空间添加到Cassandra时的流程。(根据Cassandrda源代码中的注释。如果我弄错了,请纠正我)

1)首先检查是否添加了新的密钥空间。

2)在第二步,我们检查是否在此上下文中重新创建了任何键空间    重新创建意味着它们先前已被删除但仍作为空键存在于低级模式中

3)在最后一步,我们更新修改后的密钥空间,并保存密钥空间以后再删除它们。

在修改Keyspace时,它调用了函数“updateKeyspace”,这里似乎键空间元数据已损坏,它会抛出断言错误。

在您的情况下,可能是您删除了相同的Keyspace并尝试重新创建导致此问题的原因或正如您所提到的那样是元数据损坏。