gpt4 book ai didi

mysql - SELECT 的 golang Gorp 错误

转载 作者:IT王子 更新时间:2023-10-29 01:59:43 25 4
gpt4 key购买 nike

我正在尝试使用 GORP 从 mySQL 数据库中执行 SELECT。我收到一条错误消息,显示 “reflect.Value.Interface:无法返回从未导出的字段或方法中获取的值”。我已经验证了数据库连接。例如 Select (*) count 给出正确的计数。我看到它失败了

dbmap.Select(&dd, "SELECT * FROM kd_dropdowns")

没有上面这行程序不会抛出任何错误。

这是我的代码。

package main
import (
"database/sql"
"fmt"
"log"
"net/http"

"github.com/coopernurse/gorp"
_ "github.com/go-sql-driver/mysql"
"github.com/gorilla/mux"
)

func main() {

fmt.Println("reached main")
// Create a MUX
r := mux.NewRouter()

//manegala patti
r.HandleFunc("/manegalu", manegalaTorisu).Methods("GET")

http.ListenAndServe(":8080", r)

}
func manegalaTorisu(w http.ResponseWriter, r *http.Request) {
type Dropdowns struct {
dd_id int64 `db:"dd_id"`
identifier int64 `db:"identifier"`
name string `db:"name"`
active string `db:"active"`
}

db, err := sql.Open("mysql", "krishna:xxxx@/kd")
defer db.Close()

var dbmap *gorp.DbMap
// construct a gorp DbMap
dbmap = &gorp.DbMap{Db: db, Dialect: gorp.MySQLDialect{}}

var dd []Dropdowns
_, err = dbmap.Select(&dd, "SELECT * FROM kd_dropdowns")
checkErr(err, "Select failed")
fmt.Fprint(w, "Success")
}

func checkErr(err error, msg string) {
if err != nil {
log.Fatalln(msg, err)
}
}

This is how table looks in mySQL

最佳答案

这是 Go 初学者的一个常见陷阱。

结构中的所有字段都是导出隐藏的,只是根据第一个字母:如果是大写,则导出该字段.否则,它不是。

Gorp 正在尝试访问您的结构中的导出字段。但是您使用了小写首字母,因此字段被隐藏,因此失败。

试试这个。

...
type Dropdowns struct {
DdId int64 `db:"dd_id"`
Identifier int64 `db:"identifier"`
Name string `db:"name"`
Active string `db:"active"`
}
...

如果愿意,您可以将 dd_id 驼峰式拼写为 DdId(我认为这在 Go 中更为惯用)。

请注意,Go 的大写导出功能适用于常量、包变量、类型和函数名称,以及结构中的字段。

关于mysql - SELECT 的 golang Gorp 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27095344/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com