java - Mongodb异常字符串索引超出范围: -1

标签 java mongodb mongohq

您好,我在 mongodb 上尝试了一个连接到 mongohq 的程序,但出现以下错误:

Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: -1
    at java.lang.String.substring(String.java:1958)
    at com.mongodb.MongoClientURI.<init>(MongoClientURI.java:186)
    at com.mongodb.MongoClientURI.<init>(MongoClientURI.java:138)
    at org.Mongoadded.main(Mongoadded.java:15)

我返回的代码是:

package org;

import java.net.UnknownHostException;
import java.util.Set;

import com.mongodb.DB;
import com.mongodb.MongoClient;
import com.mongodb.MongoClientURI;

public class Mongoadded {

    public static void main(String args[]) throws UnknownHostException{

        String texturi="mongodb://mymail@gmail.com:password@emma.mongohq.com:10045/mongo";
        MongoClientURI mongoURI=new MongoClientURI(texturi);
        MongoClient mongoclient=new MongoClient(mongoURI);

        DB db=mongoclient.getDB("bhv");
        db.authenticate(mongoURI.getUsername(), mongoURI.getPassword());

        Set<String> colls=db.getCollectionNames();
        for(String c:colls){
            System.out.println(c);
        }
    }

我使用的 mongo-java-driver 是 2.10.1 。 提前谢谢您

最佳答案

问题似乎出在用户名上:mymail@gmail.com

mongo客户端驱动实际上是依靠@的索引来将认证信息和主机名分开。您的代码甚至没有到达 db.authenticate 部分。它在构造函数 MongoClientURI(texturi)

处失败

关于java - Mongodb异常字符串索引超出范围: -1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19851995/

相关文章:

node.js - 具有随机键但字符串类型的对象的 Mongoose 模式

mongodb - Heroku + Node.js + MongoHQ + Expressjs

mongodb - 如何从 mongodb 的文档中只删除一两个字段?

c# - 如何获取 MongoDB 集合中的最后一项?

ruby-on-rails-3 - 在 Heroku 中的 Sinatra 和 Rails 应用程序之间共享 MongoHQ 数据库

ruby - 用于日志数据的 MongoDB 集合 : index or not?

java - 如何将文件的位置从 JSP 表单传递到 Java 程序

java - 我的 Android 应用程序一直给我一个 Leak Found 错误

用于垃圾收集的java命令行

java - 在java中检查文本中的电子邮件ID