Go MySQL 中的错误:func (*Rows) Scan 返回恐慌:(func() string)

Posted

技术标签:

【中文标题】Go MySQL 中的错误:func (*Rows) Scan 返回恐慌:(func() string)【英文标题】:error in Go MySQL: func (*Rows) Scan returns panic: (func() string) 【发布时间】:2022-01-22 21:40:05 【问题描述】:

我正在尝试扫描查询返回的行,但出现此错误

panic: (func() string) 0xc0000ac108

goroutine 1 [running]:
main.main()
        C:/Users/User/OneDrive/Dokumente/AIR/go/access/showAccess.go:35 +0x445
exit status 2

,我不明白。所有变量的类型都是正确的,Scan 应该直接转换类型。代码如下:

    var (
        id int
        operation string 
        time string
        operator int
    )

    // query for all records in accesses table
    rows, err := DBClient.Query("SELECT * FROM accesses")

    if err != nil 
        panic(err.Error)
    

    defer rows.Close()

    // printing each record formatted
    for rows.Next() 
        if err := rows.Scan(&id, &operation, &time, &operator); err != nil 
            panic(err.Error) // here the error comes
        
        fmt.Printf("ID: %3d, operation: %20s, time: %20s, operator: %d\n", 
        id, operation, time, operator)
    

珍惜你的时间。

【问题讨论】:

什么是数据库架构? 您将 func Error() 发送到恐慌中而不是对其进行操作,将其更改为 panic(err.Error()) 以获取实际错误,然后编辑问题以包含错误消息。另外,正如 aureliar 所说,数据库的架构是什么。 【参考方案1】:

我忘了在 Error 之后放大括号,就像 Yinon Eliraz 提到的那样。写panic(err.Error())解决了问题

【讨论】:

以上是关于Go MySQL 中的错误:func (*Rows) Scan 返回恐慌:(func() string)的主要内容,如果未能解决你的问题,请参考以下文章

可以 Go 的 Rows.Scan 忽略 SQL 查询中的字段

Golang中mysql数据库的使用

Go 中不那么冗长的错误处理?

golang 将func放入go中的地图中

Go语言使用gorm对MySQL进行性能测试

2022-07-04:以下go语言代码输出什么?A:true;B:false;C:编译错误。 package main import “fmt“ func main() { fmt.Pri