1

嗨,我在 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 。先感谢您

4

2 回答 2

1

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

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

于 2013-11-08T08:18:00.413 回答
0

实际上,我们必须为数据库创建一个新用户 .. 并提交该值,而不是帐户用户名、密码。它的dbusernamedbpassword

我试过了,但它在 mongohq 中不起作用..

并且以同样的方式我在mongolab中尝试过它的工作正常。

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

于 2013-11-08T16:11:24.090 回答