Создание таблицы в Cassandra с использованием Phantom в Scala
Я слежу за учебником здесь: http://blog.websudos.com/2015/04/04/a-series-on-phantom-part-1-getting-started-with-phantom/
Кассандра версия: 2.1.8
PhatomVersion 1.10.1
Версия Scala: 2.11.2
sbt-версия: 0.13.8
Помимо приведенного в статье кода у меня есть следующее:
object App {
def main(args: Array[String]) {
val user = new User(UUID.fromString("00000000-0000-0000-0000-000000000000"), "test@test.com", "Dan", DateTime.now)
val resultSetFuture = Users.store(user)
Await.result(resultSetFuture, Duration.Inf)
}
}
Когда я run
программа из sbt
Я получаю следующую ошибку (вот заголовок стека трассировки):
[error] (run-main-0) com.datastax.driver.core.exceptions.SyntaxError: line 1:157 no viable alternative at input 'CONSISTENCY' (..., 'Dan', 1437914728864) USING [CONSISTENCY]...)
com.datastax.driver.core.exceptions.SyntaxError: line 1:157 no viable alternative at input 'CONSISTENCY' (..., 'Dan', 1437914728864) USING [CONSISTENCY]...)
Я проверил csqlsh
и пространство имен было создано, но таблица не была создана.
Любая помощь высоко ценится.
Здесь build.sbt
в случае, если это полезно:
name := "Something"
organization := "danmisun.github.com"
version := "0.1.0-SNAPSHOT"
scalaVersion := "2.11.2"
crossScalaVersions := Seq("2.10.4", "2.11.2")
val PhantomVersion = "1.10.1"
libraryDependencies ++= Seq(
"org.scalatest" %% "scalatest" % "2.2.1" % "test",
"org.scalacheck" %% "scalacheck" % "1.11.5" % "test",
"com.websudos" % "phantom_2.11" % PhantomVersion,
"com.websudos" % "phantom-dsl_2.11" % PhantomVersion,
"com.websudos" % "phantom-testkit_2.11" % PhantomVersion % "test, provided"
)
resolvers ++= Seq(
"Typesafe repository snapshots" at "http://repo.typesafe.com/typesafe/snapshots/",
"Typesafe repository releases" at "http://repo.typesafe.com/typesafe/releases/",
"Sonatype repo" at "https://oss.sonatype.org/content/groups/scala-tools/",
"Sonatype releases" at "https://oss.sonatype.org/content/repositories/releases",
"Sonatype snapshots" at "https://oss.sonatype.org/content/repositories/snapshots",
"Sonatype staging" at "http://oss.sonatype.org/content/repositories/staging",
"Java.net Maven2 Repository" at "http://download.java.net/maven/2/",
"Twitter Repository" at "http://maven.twttr.com",
Resolver.bintrayRepo("websudos", "oss-releases")
)
initialCommands := "import something._"
2 ответа
Что возвращает Users.store? Если он возвращает Future [ResultSet], тогда дождитесь завершения будущего. Попробуйте поставить жду и проверить.
import scala.concurrent.{ Await, Future }
import scala.concurrent.duration.Duration
val resultSetFuture = Users.store(user)
Await.result(resultSetFuture, Duration.Inf)
Сначала вам нужно создать таблицу: (комментарий после первого запуска или вы получите "таблица уже существует, исключение:P)
Await.result(Users.create.future(), 5000 millis)
Затем удалите .consistencyLevel_=(ConsistencyLevel.ALL)
поскольку фантомная библиотека, похоже, сильно отстает от изменений в cassandra, которые говорят, что ConsistencyLevel теперь определяется для сеанса, а не для запроса.
Теперь это должно сработать, но я бы сказал, что эта библиотека не выглядит слишком многообещающе.