You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Boot中用Test Container创建两个Couchbase桶报错咨询

关于Test Containers创建多Couchbase桶的问题

我们正为包含两个Couchbase桶的场景编写集成测试,尝试通过Test Containers创建这两个桶,代码如下:

new CouchbaseContainer(dockerImage)
                .withBucket(new BucketDefinition(getBucketName()))
                .withBucket(new BucketDefinition(getNewBucketName()))
                .withCredentials("admin", "password123")
                .withServiceQuota(CouchbaseService.SEARCH, 1024)
                .withStartupTimeout(Duration.ofMinutes(15));

单桶场景下运行正常,但创建第二个桶后,执行初始化第一个桶基础配置的.n1ql文件时抛出错误:

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'couchmove' defined in class path resource [DatabaseConfiguration.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [com.github.couchmove.Couchmove]: Factory method 'couchmove' threw exception; nested exception is com.github.couchmove.exception.CouchmoveException: Unable to migrate

问题解答

你通过连续调用.withBucket()创建两个桶的方式是正确的,Test Containers的CouchbaseContainer原生支持多次调用该方法来添加多个桶实例。

错误的核心原因并非桶的创建方式,更可能是以下几点:

  1. 桶未完全就绪:虽然设置了15分钟的容器启动超时,但单个桶的初始化(包括索引创建、集群同步等)可能未完成,导致Couchmove执行迁移时目标桶仍不可用。
  2. Couchmove配置指向错误:多桶场景下,Couchmove可能默认连接了非目标桶,或者配置中未明确指定要初始化的桶名,导致N1QL脚本执行失败。
  3. N1QL脚本问题:脚本中未显式指定目标桶(比如缺少USE BUCKET your-bucket-name;语句),在多桶环境下执行时会出现上下文错误。
  4. 权限不足:admin用户对目标桶的操作权限不足,无法执行N1QL脚本中的配置操作。

排查建议

  • 在触发Couchmove迁移前,添加等待逻辑,确保两个桶都处于健康状态:
    CouchbaseContainer couchbaseContainer = new CouchbaseContainer(dockerImage)
            // ... 你的其他配置
            .withStartupTimeout(Duration.ofMinutes(15));
    couchbaseContainer.start();
    // 等待第一个桶就绪
    couchbaseContainer.waitForBucketReady(getBucketName());
    // 等待第二个桶就绪
    couchbaseContainer.waitForBucketReady(getNewBucketName());
    
  • 检查Couchmove的配置,确保明确指定了要初始化的桶名,避免默认连接错误的桶。
  • 在N1QL脚本开头添加USE BUCKET your-bucket-name;语句,明确执行上下文。
  • 验证admin用户对两个桶的权限,确保拥有Query、Bucket Full Access等必要权限。

内容的提问来源于stack exchange,提问作者Srikar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 08:47:34