1

こんにちは、mongohq に接続する mongodb でプログラムを試しましたが、次のエラーが発生します。

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 に答える