gorm踩的坑
gorm的那些坑
1. db.SingularTable(true)
在Gorm中,表名是結構體名的復數形式,列名是字段名的蛇形小寫。即,如果有一個user表,那么如果你定義的結構體名為:User,gorm會默認表名為users而不是user。
db.SingularTable(true) 讓grom轉義struct名字的時候不用加上s
2. Rows.Next() 需要關閉
每次返回的rows 都是新的實例,占用一個數據庫連接. rows.next()直到false 就會關閉,否則就會出現資源沒有被回收,但數據庫設置的超時回收也會去回收 但是會降低服務Tps。
user := new(User) rows, err := engine.Where("id >?", 1).Rows(user) if err != nil { } defer rows.Close() for rows.Next() {err = rows.Scan(user) }3. Scan error on column index 1, name “created_at”: unsupported Scan, storing driver.Value type []uint8
parseTime是查詢結果是否自動解析為時間。+loc是MySQL的時區設置
parseTime=True&loc=Local4. NewRecord和Create
db.NewRecord(user) // => 主鍵為空返回true
db.Create(&user)
NewRecord 檢查主鍵是否存在
Create 即執行 insert 操作
總結
- 上一篇: 成都大熊猫繁育研究基地建于什么时候
- 下一篇: 链表相加 2. 两数相加