【问题标题】:Cassandra Java datastax 2.1.8 Cannot connect to keyspace with quotesCassandra Java datastax 2.1.8无法使用引号连接到键空间
【发布时间】:2017-03-11 10:04:00
【问题描述】:

我有一段简单的代码用于从 cassandra 2 中删除数据

Cluster myCluster = Cluster.builder().addContactPoint(myhost).withPort(myport).build();

Session session = myCluster.connect(keyspaceName);
session.excecute(deleteStatement); -- it is just simple Delete.Where

所以基本上当我尝试在(例如)keyspaceName = "test" 上做某事时 它会很容易地执行我的删除语句,但是如果我对(例如)keyspace = "\"DONT_WORK\"" 尝试相同的操作(因为我在 cassandra 中有一个带引号的键空间名称),它将不起作用,并且会抛出

com.datastax.driver.core.exceptions.NoHostAvailableException: All host(s) tried for query failed (tried: localhost/127.0.0.1:16660 (com.datastax.driver.core.ConnectionException: [localhost/127.0.0.1:16660] Pool is shutdown))
at com.datastax.driver.core.exceptions.NoHostAvailableException.copy(NoHostAvailableException.java:84)
at com.datastax.driver.core.DriverThrowables.propagateCause(DriverThrowables.java:37)
at com.datastax.driver.core.DefaultResultSetFuture.getUninterruptibly(DefaultResultSetFuture.java:214)

我需要帮助

附言。我什至使用了 datastax 库中的 Metadata.quote() 静态方法 - 仍然无法正常工作。

【问题讨论】:

  • 你是如何创建带引号的键空间的?我认为删除时应该是相同的语法。
  • 坦率地说,我已经对现有的键空间进行了操作,但为了记录:cassandra 默认小写所有键空间名称,但如果您想忽略该小写字母,请将名称放在引号中。例如:输入 CQL CREATE KEYSPACE "MY_KEYSPACE" WITH {...} 它将准确地创建 "MY_KEYSPACE" 键空间。
  • 你是说myCluster.connect(keyspaceName); 是问题吗?

标签: java cassandra datastax cassandra-2.1


【解决方案1】:

您不需要引用键空间名称来进行连接。引用对于在 CQL 字符串的上下文中保护区分大小写很重要,但如果您将密钥空间名称作为 API 参数传递,则不需要保护它。

【讨论】:

    【解决方案2】:

    好的,没有必要进一步调查这个问题。问题是我不小心在 2.0.8 版本的 cassandra 上使用了 2.1.8 datastax 库。我必须停止使用数字键盘。简单的错误,但确实大惊小怪。

    【讨论】:

      猜你喜欢
      • 2017-12-26
      • 2016-12-11
      • 2018-04-16
      • 2015-05-21
      • 2014-07-28
      • 2020-01-08
      • 2016-02-18
      • 1970-01-01
      • 2015-08-16
      相关资源
      最近更新 更多