СОЗДАЙТЕ KEYSPACE, ЕСЛИ НЕ СУЩЕСТВУЕТ В CQL
Я использую ниже синтаксис 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 ответа
Это, кажется, правильный синтаксис (ref: docs). Я только что сам попробовал на Cassandra 2.0.7.
Опция "если не существует" является частью CQL3, который впервые появился в Cassandra 1.2. Я бы дважды проверил вашу версию Cassandra, чтобы увидеть, доступна ли эта опция.
Если вы столкнулись с той же самой SyntaxError (И вы используете Eclipse), убедитесь, что сначала ваша Eclipse IDE не экспортируется с кодировкой символов Cp1252, но с UTF-8 (или любой другой кодировкой, соответствующей кодировке вашего кольца Кассандры (обычно UTF-8).