我正在使用两台不同的计算机在 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/