如果在CQL中不存在,请创建KEYSPACE



我只在不存在的情况下使用下面的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)

能帮我一下吗?语法有什么问题?

这似乎是正确的语法(ref: docs)。我刚刚在Cassandra 2.0.7上试过了。

"if not exists"选项是CQL3的一部分,它首次出现在Cassandra 1.2中。我会再次检查你的Cassandra版本,看看这个选项是否可用。

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

最新更新