[英]Can not Connect to MLab Mongo Database from mongodb java driver
[英]Connect to external mongo database (java)
我正在嘗試連接到我通過mongolab創建的mongo數據庫
我在mongolab的數據庫頁面上提到了標准的uri:
我試試這段代碼:
String uriString = "mongodb://user:password@ds047037.mongolab.com:47037/db_test_01";
MongoURI uri = new MongoURI(uriString);
try {
DB db = uri.connectDB();
db.authenticate(uri.getUsername(), uri.getPassword());
Set<String> colls = db.getCollectionNames();
for (String s : colls) {
System.out.println(s);
}
System.out.println("done");
} catch (UnknownHostException e) {
System.out.println("UnknownHostException: " + e);
} catch(MongoException me) {
System.out.println("MongoException: " + me);
}
但是,我得到UnknownHostException: java.net.UnknownHostException: ds047037.mongolab.com
有關UnknownHostException
文檔說:“拋出表示無法確定主機的IP地址。”
怎么了?
在堆棧中的某個點看起來像DNS解析問題。 java.net.UnknownHostException
為“拋出,表示無法確定主機的IP地址”。
Java問題
問題可能出在Java本身。 Java和IPv6存在已知問題 。 您可以嘗試將java.net.preferIPv4Stack
系統屬性設置為true
以查看是否可以解決問題。
作為啟動JVM時java
命令的參數:
java -Djava.net.preferIPv4Stack=true YourMainClass
或以編程方式:
System.setProperty("java.net.preferIPv4Stack" , "true");
您還可以嘗試升級到最新版本的Java以獲取隨附的所有錯誤修復。
您的DNS服務器或配置有問題
問題還可能出在筆記本電腦/機器上的DNS配置中。 您可以使用dig
來查看DNS查找返回的內容。 以下是我從筆記本電腦中獲得的輸出。 您也可以使用此網頁版本的dig來查看您應該獲得的內容。
% dig ds047037.mongolab.com
; <<>> DiG 9.8.3-P1 <<>> ds047037.mongolab.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 20375
;; flags: qr rd ra; QUERY: 1, ANSWER: 4, AUTHORITY: 0, ADDITIONAL: 0
;; QUESTION SECTION:
;ds047037.mongolab.com. IN A
;; ANSWER SECTION:
ds047037.mongolab.com. 120 IN CNAME ds047037-a.mongolab.com.
ds047037-a.mongolab.com. 120 IN CNAME h000432.mongolab.com.
h000432.mongolab.com. 120 IN CNAME ec2-46-51-159-130.eu-west-1.compute.amazonaws.com.
ec2-46-51-159-130.eu-west-1.compute.amazonaws.com. 300 IN A 46.51.159.130
;; Query time: 23 msec
;; SERVER: 192.168.1.1#53(192.168.1.1)
;; WHEN: Sat Jan 12 13:22:24 2013
;; MSG SIZE rcvd: 162
如果您確認DNS配置/服務器是問題,則需要確定您正在使用的DNS服務器 ,然后聯系所有者/管理員或聯系您的ISP以確保它們按照應有的順序進行配置。
嘗試使用主機和端口 ,所以:
Mongo mongo = new Mongo("ds047037.mongolab.com", 47037);
DB db = mongo.getDB("db_test_01");
db.authenticate(user, password);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.