【问题标题】:Spring data cassandra - No keyspace has been specifiedSpring data cassandra - 未指定密钥空间
【发布时间】:2018-07-01 07:39:49
【问题描述】:

我在使用 Spring Data cassandra 时遇到问题。即使在 CassandraConfig 中指定键空间,它也会给我这个错误。

com.datastax.driver.core.exceptions.InvalidQueryException:没有键空间 已指定。使用键空间,或明确指定 keyspace.tablename 在 com.datastax.driver.core.Responses$Error.asException(Responses.java:147) ~[cassandra-driver-core-3.4.0.jar:na]

CQL [SELECT * FROM test WHERE token='asdasdasdasd';];不 已指定密钥空间。使用键空间,或明确指定 keyspace.tablename;

Cassandra 配置:

@Configuration
@EnableCassandraRepositories(basePackages = "com.test.model")
public class CassandraConfig extends AbstractCassandraConfiguration {

    @Override
    protected String getKeyspaceName() {
        return "testKeySpace";
    }

    @Bean
    public CassandraClusterFactoryBean cluster() {
        CassandraClusterFactoryBean cluster =
                new CassandraClusterFactoryBean();
        cluster.setContactPoints("127.0.0.1");
        cluster.setPort(9142);
        return cluster;
    }

    @Bean
    public CassandraMappingContext cassandraMapping()
            throws ClassNotFoundException {
        return new BasicCassandraMappingContext();
    }
}

【问题讨论】:

  • 您能否发布一个能够重现该问题的 Github 存储库/代码的链接?
  • @mp911de 我设法找出了问题所在。即使在 CassandraConfig 类中指定了键空间,他也期望来自 application.properties 的属性。我认为这是一个错误。我创建了 application.properties 并在那里指定了键空间并且它起作用了。

标签: spring spring-boot spring-data-cassandra


【解决方案1】:

您的问题看起来很像this

getKeyspaceName() 告诉 cassandra 使用哪个键空间,但您还需要创建这个键空间:

@Override
protected List<CreateKeyspaceSpecification> getKeyspaceCreations() {
    return Arrays.asList(
            CreateKeyspaceSpecification.createKeyspace()
                    .name("your_keyspace_name")
                    .ifNotExists()
    );
}

【讨论】:

    猜你喜欢
    • 2019-02-23
    • 2016-04-18
    • 2020-05-25
    • 2021-11-25
    • 2021-06-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-29
    相关资源
    最近更新 更多