我正在从Digital Ocean运行全新安装的Ubuntu 14.04。我通过拨打sudo apt-get install postgresql postgresql-contrib
安装了Postgres。我通过调用go get github.com/lib/pq
安装了Postgres驱动程序。
我创建了一个名为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
。我可以使用Postgres解释器作为用户foo
,但是当我从Go尝试查询时它失败了。我怀疑这可能是一个许可问题。
答案 0 :(得分:0)
连接字符串参数应为user=foo
,而不是username=foo
。