<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
執行任何操作後,如果發生任何錯誤,GORM將其設定為*DB
的Error
欄位
if err := db.Where("name = ?", "jinzhu").First(&user).Error; err != nil { // 錯誤處理... } // 如果有多個錯誤發生,用`GetErrors`獲取所有的錯誤,它返回`[]error` db.First(&user).Limit(10).Find(&users).GetErrors() // 檢查是否返回RecordNotFound錯誤 db.Where("name = ?", "hello world").First(&user).RecordNotFound() if db.Model(&user).Related(&credit_card).RecordNotFound() { // 沒有信用卡被發現處理... }
要在事務中執行一組操作,一般流程如下。
// 開始事務 tx := db.Begin() // 在事務中做一些資料庫操作(從這一點使用'tx',而不是'db') tx.Create(...) // ... // 發生錯誤時回滾事務 tx.Rollback() // 或提交事務 tx.Commit()
func CreateAnimals(db *gorm.DB) err { tx := db.Begin() // 注意,一旦你在一個事務中,使用tx作為資料庫控制程式碼 if err := tx.Create(&Animal{Name: "Giraffe"}).Error; err != nil { tx.Rollback() return err } if err := tx.Create(&Animal{Name: "Lion"}).Error; err != nil { tx.Rollback() return err } tx.Commit() return nil }
db.Exec("DROP TABLE users;") db.Exec("UPDATE orders SET shipped_at=? WHERE id IN (?)", time.Now, []int64{11,22,33}) // Scan type Result struct { Name string Age int } var result Result db.Raw("SELECT name, age FROM users WHERE name = ?", 3).Scan(&result)
獲取查詢結果為*sql.Row
或*sql.Rows
row := db.Table("users").Where("name = ?", "jinzhu").Select("name, age").Row() // (*sql.Row) row.Scan(&name, &age) rows, err := db.Model(&User{}).Where("name = ?", "jinzhu").Select("name, age, email").Rows() // (*sql.Rows, error) defer rows.Close() for rows.Next() { ... rows.Scan(&name, &age, &email) ... } // Raw SQL rows, err := db.Raw("select name, age, email from users where name = ?", "jinzhu").Rows() // (*sql.Rows, error) defer rows.Close() for rows.Next() { ... rows.Scan(&name, &age, &email) ... }
rows, err := db.Model(&User{}).Where("name = ?", "jinzhu").Select("name, age, email").Rows() // (*sql.Rows, error) defer rows.Close() for rows.Next() { var user User db.ScanRows(rows, &user) // do something }
從*gorm.DB
連線獲取通用資料庫介面*sql.DB
// 獲取通用資料庫物件`*sql.DB`以使用其函數 db.DB() // Ping db.DB().Ping()
db.DB().SetMaxIdleConns(10) db.DB().SetMaxOpenConns(100)
將多個欄位設定為主鍵以啟用複合主鍵
type Product struct { ID string `gorm:"primary_key"` LanguageCode string `gorm:"primary_key"` }
Gorm有內建的紀錄檔記錄器支援,預設情況下,它會列印發生的錯誤
// 啟用Logger,顯示詳細紀錄檔 db.LogMode(true) // 禁用紀錄檔記錄器,不顯示任何紀錄檔 db.LogMode(false) // 偵錯單個操作,顯示此操作的詳細紀錄檔 db.Debug().Where("name = ?", "jinzhu").First(&User{})
參考GORM的預設記錄器如何自定義它
db.SetLogger(gorm.Logger{revel.TRACE}) db.SetLogger(log.New(os.Stdout, "rn", 0))
以上就是golang gorm錯誤處理事務以及紀錄檔用法範例的詳細內容,更多關於golang gorm錯誤處理事務紀錄檔範例的資料請關注it145.com其它相關文章!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45