postgresql - 通过 pq 连接到 PostgreSQL 数据库返回 "bad connection"错误

标签 postgresql go

我正在使用两台不同的计算机在 Go 和 PostgreSQL 中制作一个网络应用程序。两台计算机上的设置相同(Ubuntu 与最新版本的 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)
    }
}

然后我得到:

Ping to my_database not possible!

driver: bad connection

我发现很多关于 SO 的问题都存在相同的错误,但我没有找到可以解决我的问题的解决方案。

此外,在我的笔记本电脑上,就像在我的台式电脑上一样,有一个用户 postgres 并且我可以通过 psql 连接到数据库,所以守护进程是事件的并且密码正确。我在两台计算机上使用完全相同的设置和代码。

我的问题是:如何获得有关该错误的更多信息?我发现“连接不良”太含糊了。我相信更多的信息会对我有很大帮助。

此外,您是否知道会导致错误?

更新

PostgreSQL 日志是这样说的:

2014-09-29 14:23:26 EDT FATAL: password authentication failed for user "postgres"

2014-09-29 14:23:26 EDT DETAIL: Connection matched pg_hba.conf line 92: "host all all 127.0.0.1/32 md5"

但我仔细检查了密码,应该没问题。我还可以以 posgres 用户身份登录,运行 psql 命令并执行查询。

最佳答案

我找到了解决这个问题的方法。

我以 postgres 身份登录并运行 psql postgres。换句话说,我连接到 postgres 数据库。然后我运行命令\password 并输入一个新密码。

我输入的密码与我从一开始就使用的密码完全相同,现在它可以正常工作了。

问题已解决,但如果有人知道可能是什么原因,我很感兴趣。可能跟密码过期有关?

关于postgresql - 通过 pq 连接到 PostgreSQL 数据库返回 "bad connection"错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26104846/

相关文章:

qt gui 更新元素不适用于 Golang

Goroutine 不运行

go - 我如何在 golang 中做枚举?

go - io.LimitReader 读取 http.Body 时的 EOF

postgresql - postgresql 中的 uuid_generate 性能缓慢

postgresql - Postgres 排序不一致

postgresql - 批量插入时 Slick 3.0 中的数据库异常

go - 如何使用cgo静态链接go中的c库?

mongodb - 如何将 MongoDB 的数据库转储迁移到 PostgreSQL?

sql - 为什么 Postgres 中没有 "SELECT foo.* ... GROUP BY foo.id"?