我正在從Digital Ocean運行全新安裝的Ubuntu 14.04。我已經通過調用sudo apt-get install postgresql postgresql-contrib
安裝了Postgres。我通過調用go get github.com/lib/pq
安裝Postgres驅動程序。lib/pq連接但查詢失敗,連接不良
我做了一個名爲foo
的Ubuntu用戶。然後,我使用createuser --interactive
創建一個名爲foo
的Postgres角色,其屬性僅爲Create DB
。接下來,我通過調用createdb foo
來創建一個新的數據庫。最後,我用CREATE TABLE
創建了一個新表格。哦,並且我已將export PGHOST=/var/run/postgresql
添加到我的.bashrc
文件中。
然後,我寫了下面的文件在/home/foo/go/src/dbtest.go
。
package main
import (
"database/sql"
"fmt"
"log"
_ "github.com/lib/pq"
)
func main() {
connInfo := "username=foo dbname=foo host=/var/run/postgresql sslmode=disable"
db, err := sql.Open("postgres", connInfo)
if err != nil {
log.Fatalln(err)
}
defer db.Close()
rows, err := db.Query("SELECT * FROM bar")
if err != nil {
log.Fatalln(err) // Code fails here.
}
defer rows.Close()
fmt.Println(rows)
}
我遇到的問題是,調用sql.Open
不返回一個錯誤,但是當我打電話db.Query
我得到driver: bad connection
。作爲用戶foo
,我可以使用Postgres解釋器,但是當我嘗試從Go執行查詢時,它會失敗。我懷疑這可能是一個權限問題。
不知道去,但你的主機信息似乎有點奇怪。它不應該是本地主機?或您的數據庫服務器的主機名? – faboolous 2014-09-03 02:23:49
另外,從文檔:'打開可能只是驗證它的參數而不創建到數據庫的連接。要驗證數據源名稱是否有效,請調用Ping.' – 2014-09-03 04:34:33
此外,您應驗證PostgreSQL確實正在偵聽Unix套接字(如'/ var/run/postgresql'所示)。檢查PostgreSQL日誌中是否存在錯誤還會顯示您的應用程序是否甚至打到了數據庫,或者是否存在阻止此問題的權限/身份驗證問題。 – elithrar 2014-09-03 04:56:13