您好我在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。 提前谢谢你
答案 0 :(得分:1)
问题似乎在用户名:mymail@gmail.com
mongo客户端驱动程序实际上依赖于@
的索引来将身份验证信息与主机名分开。您的代码甚至没有到达db.authenticate
部分。它在构造函数MongoClientURI(texturi)
答案 1 :(得分:0)
实际上我们必须为数据库创建一个新用户..并提交这些值, 它不是帐户用户名,密码。其 dbusername , dbpassword 。
我试过但它不在mongohq工作..
和我在mongolab中尝试过的方式相同。
如果有人知道如何在mongohq做,请让我知道谢谢!