我有这样的代码:
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"
我认为这会有所帮助;)
答案 0 :(得分:2)
确定, 正确的连接字符串是:
"user=postgres host=/tmp dbname=vagrant sslmode=disable"
我假设pg库使用与psql
或ruby驱动程序相同的默认值。经验教训。
答案 1 :(得分:1)
在控制台中运行:
psql "user=postgres dbname=vagrant sslmode=disable"
如果你无法连接,那么它需要更改sslmode,我会考虑更多。