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

时间:2013-11-08 05:07:07

标签: 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。 提前谢谢你

2 个答案:

答案 0 :(得分:1)

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

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

中失败了

答案 1 :(得分:0)

实际上我们必须为数据库创建一个新用户..并提交这些值, 它不是帐户用户名,密码。其 dbusername dbpassword

我试过但它不在mongohq工作..

和我在mongolab中尝试过的方式相同。

如果有人知道如何在mongohq做,请让我知道谢谢!