【发布时间】:2019-05-20 01:37:59
【问题描述】:
情况如下图:https://pasteboard.co/HSsFIgn.png
我有 PostgreSQL 便携版 10.1 和 golang 1.10.2 便携版。我写了一个简单的程序来从数据库中获取数据,但我没有得到响应代码是这样的:我没有编译错误,我可以运行 dbapp.exe,结果什么也没得到,请看上面粘贴的图片或下面的代码:谢谢任何提示。
package main
import (
"database/sql"
"fmt"
_ "github.com/lib/pq"
"log"
)
const (
DB_USER = "postgres"
DB_PASSWORD = ""
DB_NAME = "golang"
)
func main() {
dbinfo := fmt.Sprintf("user=%s password=%s dbname=%s sslmode=disable",
DB_USER, DB_PASSWORD, DB_NAME)
db, err := sql.Open("postgres", dbinfo)
checkErr(err)
defer db.Close()
var (
id int
name string
)
rows, err := db.Query("select id, song from music where id = 1")
if err != nil {
log.Fatal(err)
}
defer rows.Close()
for rows.Next() {
err := rows.Scan(&id, &name)
if err != nil {
log.Fatal(err)
}
log.Println(id, name)
}
err = rows.Err()
if err != nil {
log.Fatal(err)
}
}
func checkErr(err error) {
if err != nil {
fmt.Println(err)
panic(err)
}
}
【问题讨论】:
-
针对您数据库中的
golangDB 查询select id, song from music where id = 1是否真的产生结果? -
您确定您运行的是正确版本的应用程序吗?由于代码完全没有输出,所以很难知道......
-
go 代码、db 连接参数和 db 数据似乎一切正常。尝试重新编译二进制文件并再次运行它。此外,还要检查 postgres 的日志以查看它是否正在接收查询(如果尚未启用日志,您可能必须先启用日志,然后重新启动服务器)。
-
好的,我知道了,问题是 sql.Open 字符串,fianl 代码可以这样工作,没有问题:package main import ("database/sql" "fmt" _ "github.com/lib /pq" "log" ) func main() { //需要更改 sql.Open 字符串 db, err := sql.Open("postgres", "user=postgres dbname=golang port=5432 sslmode=disable") checkErr (err) defer db.Close() var ( id int name string )...等等类似上...
标签: postgresql go