如果不是CQL中的EXISTS,则创建KEYSPACE

时间:2014-03-27 15:55:23

标签: cql3 cassandra-jdbc

我使用以下CQL语法仅在不存在的情况下创建密钥空间:

CREATE KEYSPACE IF NOT EXISTS Test WITH replication 
                = {'class':'SimpleStrategy', 'replication_factor':1};

但它给出了错误:

Exception in thread "main" com.datastax.driver.core.exceptions.SyntaxError: line 1:23 extraneous input 'EXISTS' expecting '='
at com.datastax.driver.core.exceptions.SyntaxError.copy(SyntaxError.java:35)
at com.datastax.driver.core.DefaultResultSetFuture.extractCauseFromExecutionException(DefaultResultSetFuture.java:256)
at com.datastax.driver.core.DefaultResultSetFuture.getUninterruptibly(DefaultResultSetFuture.java:172)
at com.datastax.driver.core.SessionManager.execute(SessionManager.java:91)
at com.datastax.driver.core.SessionManager.execute(SessionManager.java:83)

请帮帮我吗?什么语法错了?

2 个答案:

答案 0 :(得分:1)

这似乎是正确的语法(参考:docs)。我自己在Cassandra 2.0.7上尝试过。

"如果不存在"选项是CQL3的一部分,它首先与Cassandra 1.2一起提供。我会仔细检查你的Cassandra版本,看看这个选项是否可用。

答案 1 :(得分:0)

如果您遇到同样的SyntaxError(并且您使用Eclipse),请确保您的Eclipse IDE首先不使用Cp1252字符编码导出,而是使用UTF-8(或任何其他与Cassandra环相匹配的编码(通常为UTF-8))