Golang lib / pg无法连接到postgres

时间:2015-12-23 13:14:41

标签: postgresql go

我有这样的代码:

package main

import (
        "database/sql"
        "fmt"
        "log"

        _ "github.com/lib/pq"
)

func main() {
        db, err := sql.Open("postgres", "user=postgres dbname=vagrant sslmode=disable")
        if err != nil {
                log.Fatal(err)
        }

        rows, err := db.Query("SELECT 3+5")
        if err != nil {
                log.Fatal(err)
        }
        fmt.Println(rows)
}

结果是:

[vagrant@localhost go-postgres]$ go run test.go
2015/12/19 11:03:53 pq: Ident authentication failed for user "postgres"
exit status 1

但我可以访问postgres:

[vagrant@localhost go-postgres]$ psql -U postgres vagrant
psql (9.4.4)
Type "help" for help.

vagrant=#

我对使用postgres的Rails应用程序没有任何麻烦。

有人有想法吗?

编辑: 这是我的pg_hba.conf:

local   all             all                                     trust
host    all             all             127.0.0.1/32            ident
host    all             all             ::1/128                 ident

EDIT2:

我在postgres日志中找到了这个:

< 2015-12-19 12:13:05.094 UTC >LOG:  could not connect to Ident server at address "::1", port 113: Connection refused
< 2015-12-19 12:13:05.094 UTC >FATAL:  Ident authentication failed for user "postgres"
< 2015-12-19 12:13:05.094 UTC >DETAIL:  Connection matched pg_hba.conf line 84: "host    all             all             ::1/128                 ident"

我认为这会有所帮助;)

2 个答案:

答案 0 :(得分:2)

确定, 正确的连接字符串是:

"user=postgres host=/tmp dbname=vagrant sslmode=disable"

我假设pg库使用与psql或ruby驱动程序相同的默认值。经验教训。

答案 1 :(得分:1)

在控制台中运行:

psql "user=postgres dbname=vagrant sslmode=disable"

如果你无法连接,那么它需要更改sslmode,我会考虑更多。