2014-09-29 37 views
0

我正在Go和PostgreSQL中使用兩臺不同的計算機創建Web應用程序。兩臺電腦上的設置都是一樣的(Ubuntu和Go和PostgreSQL的最新版本)。問題是我無法讓我的應用程序連接到筆記本電腦上的數據庫。通過pq(Go)連接到PostgreSQL數據庫會返回一個「錯誤的連接」錯誤

我使用這段代碼:

func (db *Database) Dial(user string, password string, dbname string) { 
    var err error 
    db.Conn, err = sql.Open("postgres", "user="+user+" password="+password+" dbname="+dbname+" sslmode=require") 
    if err != nil { 
     fmt.Println("Connection to " + dbname + " not possible!") 
     log.Fatal(err) 
    } 
    err = db.Conn.Ping() 
    if err != nil { 
     fmt.Println("Ping to " + dbname + " not possible!") 
     fmt.Println(err) 
    } 
} 

我也得到:

坪MY_DATABASE不可能的!

司機:不好的連接

我發現了同樣的錯誤如此多的問題,但我沒有發現任何解決方案,能夠解決我的情況。

此外,在我的筆記本電腦,就像我的臺式電腦上,有用戶Postgres的,我可以通過PSQL連接到數據庫,所以守護進程被激活,密碼是正確的。我在兩臺計算機上使用完全相同的設置和代碼。

我的問題是:如何獲得有關錯誤的更多信息?我覺得「不好的聯繫」太模糊了。我相信多一點的信息會對我有很大的幫助。

另外,你有一個想法會導致錯誤?

更新

PostgreSQL的日誌中這樣說:

2014年9月29日14點23分26秒EDT FATAL:密碼驗證失敗的用戶 「Postgres的」

2014- 09-29 14:23:26 EDT詳情:連接匹配pg_hba.conf第92行:「host all all 127.0.0.1/32 md5」

但我仔細檢查了密碼,它應該很好。我也可以登錄爲posgres用戶,運行psql命令並執行查詢。

+0

如果你設置sslmode = disable,會發生什麼? – 2014-09-29 16:49:25

+0

顯示完全相同的錯誤。 – 2014-09-29 17:05:05

+0

有沒有什麼有用的postgres日誌中出現? – urandom 2014-09-29 18:18:59

回答

1

我找到了解決這個問題的方法。

我登錄爲postgres並運行psql postgres。換句話說,我連接到postgres數據庫。然後我運行命令\密碼並輸入一個新密碼。

我輸入了與我一直使用的完全相同的密碼,從某種程度上來說它現在可以工作。

問題已解決,但如果有人對可能導致原因有所瞭解,我很感興趣。也許它與密碼到期有關?

+0

您的密碼一定是錯誤的,你是每次輸入它還是使用主機憑證或'psql'?我一直在使用Go和PostgreSQL進行各種配置,我從來沒有遇到過這種情況。 – 2014-09-30 01:40:45

+0

我輸入了它每次我想要使用* psql *。 – 2014-09-30 01:50:52

+0

超級奇怪!如果你想知道發生了什麼或者你可以重現它,請發表評論 – 2014-09-30 01:58:54