为了账号安全,请及时绑定邮箱和手机立即绑定

无法使用* DB.Rows()获取所有行

无法使用* DB.Rows()获取所有行

Go
小唯快跑啊 2021-04-09 22:19:03
我是gorm的新手,所以如果我误解了一点,请指出。我正在使用MySQL编写小型应用程序,因此决定将gorm用作ORM。源代码和输出如下。package mainimport (    "fmt"    "log"    "github.com/jinzhu/gorm"    _ "github.com/jinzhu/gorm/dialects/mysql")type Group struct {    gorm.Model    Name string `gorm:"not null;unique"`}func openDB() *gorm.DB {    user := "ipmonitor"    password := "testpassword"    database := "ipmonitor"    mysqlURL := "%s:%s@/%s?charset=utf8mb4&parseTime=True&loc=Local"    db, err := gorm.Open("mysql", fmt.Sprintf(mysqlURL, user, password, database))    if err != nil {        log.Fatalln(err)    }    return db}func initDB(db *gorm.DB) {    db = db.Set("gorm:table_options", "ENGINE=InnoDB CHARSET=utf8mb4")    db.AutoMigrate(&Group{})    result := db.Create(&Group{Name: "foo"})    if result.Error != nil {        log.Fatalln(result.Error)    }    result = db.Create(&Group{Name: "bar"})    if result.Error != nil {        log.Fatalln(result.Error)    }    result = db.Create(&Group{Name: "baz"})    if result.Error != nil {        log.Fatalln(result.Error)    }}func main() {    db := openDB()    db.LogMode(true)    initDB(db)    records := db.Find(&Group{})    if records.Error != nil {        log.Fatalln(records.Error)    }    log.Printf("%d rows found.", records.RowsAffected)    rows, err := records.Rows()    if err != nil {        log.Fatalln(err)    }    defer rows.Close()    for rows.Next() {        var group Group        err := db.ScanRows(rows, &group)        if err != nil {            log.Fatalln(err)        }        log.Printf("%+v\n", group)    }    if rows.Err() != nil {        log.Fatalln(rows.Err())    }}我希望该*DB.Find().Rows()方法返回多行,但似乎只返回最后一行。根据gorm debug输出,似乎在执行SELECT语句时添加了未指定的条件。谷歌搜索后,我无法找出问题的原因。为什么我的代码不起作用?
查看完整描述

1 回答

?
慕尼黑的夜晚无繁华

TA贡献1864条经验 获得超6个赞

您可以尝试这种替代方法:


var records []Group

db.Find(&records)

所有数据都可以在中作为数组使用records。


如果您需要处理错误:


if err := db.Find(&records).Error; err != nil {

  log.Fatalln(err)

}

log.Printf("%d rows found.", len(records))


查看完整回答
反对 回复 2021-04-19
  • 1 回答
  • 0 关注
  • 327 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信