亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

無法使用* 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 關注
  • 380 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號