Spring Boot:Couchbase 5.0.1 - 无法连接到couchbaseDB

时间:2017-12-21 18:51:21

标签: spring spring-boot couchbase

我是couchbaseDB的新用户,当我将couchbaseDB升级到5.0.1时遇到了将Spring启动应用程序连接到数据库的问题。

这是我的配置:

CouchbaseConfig.java

@Configuration
public class CouchbaseConfig {

   @Value("${spring.couchbase.bootstrap-hosts:localhost}")
   private String couchbaseUri;

   @Value("${spring.data.couchbase.bucket.name}")
   private String bucketName;

   public Cluster cluster() {
      return CouchbaseCluster.create(couchbaseUri).authenticate("user","password");
   }

   public Bucket bucket() {
      return cluster().openBucket(bucketName);
   }

我能够打开我创建的存储桶,但由于异常情况它会立即关闭,它总是要求"默认"存储桶的密码,该密码不存在于数据库中。这是错误日志:

错误日志:

org.springframework.beans.factory.BeanCreationException:创建名称为' couchbaseClient'的bean时出错在类路径资源中定义[org / springframework / boot / autoconfigure / couchbase / CouchbaseAutoConfiguration $ CouchbaseConfiguration.class]:通过工厂方法的Bean实例化失败;嵌套异常是org.springframework.beans.BeanInstantiationException:无法实例化[com.couchbase.client.java.Bucket]:工厂方法' couchbaseClient'抛出异常;嵌套异常是com.couchbase.client.java.error.InvalidPasswordException:存储桶的密码"默认"不符合。     在org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:599)〜[spring-beans-4.3.13.RELEASE.jar:4.3.13.RELEASE]     在org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1173)〜[spring-beans-4.3.13.RELEASE.jar:4.3.13.RELEASE]     在org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1067)〜[spring-beans-4.3.13.RELEASE.jar:4.3.13.RELEASE]     在org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:513)〜[spring-beans-4.3.13.RELEASE.jar:4.3.13.RELEASE]     在org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:483)〜[spring-beans-4.3.13.RELEASE.jar:4.3.13.RELEASE]     at org.springframework.beans.factory.support.AbstractBeanFactory $ 1.getObject(AbstractBeanFactory.java:306)〜[spring-beans-4.3.13.RELEASE.jar:4.3.13.RELEASE]     在org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230)〜[spring-beans-4.3.13.RELEASE.jar:4.3.13.RELEASE]     在org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:302)〜[spring-beans-4.3.13.RELEASE.jar:4.3.13.RELEASE]     在org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197)〜[spring-beans-4.3.13.RELEASE.jar:4.3.13.RELEASE]     在org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:296)〜[spring-beans-4.3.13.RELEASE.jar:4.3.13.RELEASE]     在org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197)〜[spring-beans-4.3.13.RELEASE.jar:4.3.13.RELEASE]     在org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:761)〜[spring-beans-4.3.13.RELEASE.jar:4.3.13.RELEASE]     在org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:867)〜[spring-context-4.3.13.RELEASE.jar:4.3.13.RELEASE]     在org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:543)〜[spring-context-4.3.13.RELEASE.jar:4.3.13.RELEASE]     在org.springframework.boot.SpringApplication.refresh(SpringApplication.java:693)[spring-boot-1.5.9.RELEASE.jar:1.5.9.RELEASE]     在org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:360)[spring-boot-1.5.9.RELEASE.jar:1.5.9.RELEASE]     在org.springframework.boot.SpringApplication.run(SpringApplication.java:303)[spring-boot-1.5.9.RELEASE.jar:1.5.9.RELEASE]     在org.springframework.boot.SpringApplication.run(SpringApplication.java:1118)[spring-boot-1.5.9.RELEASE.jar:1.5.9.RELEASE]     在org.springframework.boot.SpringApplication.run(SpringApplication.java:1107)[spring-boot-1.5.9.RELEASE.jar:1.5.9.RELEASE]     在com.sample.project.api.ProjectApiApplication.main(ProjectApiApplication.java:10)[classes /:na] 引起:org.springframework.beans.BeanInstantiationException:无法实例化[com.couchbase.client.java.Bucket]:工厂方法' couchbaseClient'抛出异常;嵌套异常是com.couchbase.client.java.error.InvalidPasswordException:存储桶的密码"默认"不匹配。     在org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:189)〜[spring-beans-4.3.13.RELEASE.jar:4.3.13.RELEASE]     在org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:588)〜[spring-beans-4.3.13.RELEASE.jar:4.3.13.RELEASE]     ...省略了19个常见帧 引起:com.couchbase.client.java.error.InvalidPasswordException:存储桶的密码"默认"不符合。     在com.couchbase.client.java.CouchbaseAsyncCluster $ OpenBucketErrorHandler.call(CouchbaseAsyncCluster.java:644)〜[java-client-2.5.3.jar:na]     在com.couchbase.client.java.CouchbaseAsyncCluster $ OpenBucketErrorHandler.call(CouchbaseAsyncCluster.java:627)〜[java-client-2.5.3.jar:na]     at rx.internal.operators.OperatorOnErrorResumeNextViaFunction $ 4.onError(OperatorOnErrorResumeNextViaFunction.java:140)~ [rxjava-1.3.3.jar:1.3.3]     at rx.internal.operators.OnSubscribeMap $ MapSubscriber.onError(OnSubscribeMap.java:88)〜[rxjava-1.3.3.jar:1.3.3]     在rx.observers.Subscribers $ 5.onError(Subscribers.java:230)~ [rxjava-1.3.3.jar:1.3.3]     at rx.internal.operators.OperatorObserveOn $ ObserveOnSubscriber.checkTerminated(OperatorObserveOn.java:273)~ [rxjava-1.3.3.jar:1.3.3]     at rx.internal.operators.OperatorObserveOn $ ObserveOnSubscriber.call(OperatorObserveOn.java:216)~ [rxjava-1.3.3.jar:1.3.3]     在rx.internal.schedulers.ScheduledAction.run(ScheduledAction.java:55)〜[rxjava-1.3.3.jar:1.3.3]     at java.util.concurrent.Executors $ RunnableAdapter.call(Unknown Source)〜[na:1.8.0_131]     at java.util.concurrent.FutureTask.run(Unknown Source)〜[na:1.8.0_131]     at java.util.concurrent.ScheduledThreadPoolExecutor $ ScheduledFutureTask.access $ 201(Unknown Source)〜[na:1.8.0_131]     at java.util.concurrent.ScheduledThreadPoolExecutor $ ScheduledFutureTask.run(Unknown Source)〜[na:1.8.0_131]     at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)〜[na:1.8.0_131]     at java.util.concurrent.ThreadPoolExecutor $ Worker.run(Unknown Source)〜[na:1.8.0_131]     在java.lang.Thread.run(未知来源)〜[na:1.8.0_131]

我的问题是如何不打开"默认"只打开我在couchbaseDB中创建的存储桶?我希望你能帮我解决这个问题。提前谢谢。

1 个答案:

答案 0 :(得分:0)

除非我没有看到代码的重要部分,否则不应该发生这种情况。你使用哪个couchbase sdk版本?

这是一个有效的例子:

CouchbaseCluster server = CouchbaseCluster.create("testServer");
server.authenticate("user","password");
Bucket testBucket = server.openBucket("testBucket");

以上只会“成功”。如果经过身份验证的用户(用户)有权访问它,则打开testBucket,否则它将抛出InvalidPasswordException。您不会在上面的代码中点击任何存储桶,而是testBucket