1.sqlx查询
业务代码避免使用select * from语句,因为当新增字段而业务代码未更新时会报错。
fields := m.TraversalsByName(base, columns)
// if we are not unsafe and are missing fields, return an error
if f, err := missingFields(fields); err != nil && !isUnsafe(rows) {
return fmt.Errorf("missing destination name %s in %T", columns[f], dest)
}
由于上面这段代码,字段缺失错误。
2.gorm
当出现类似错误时:
Scan error on column index 4: unsupported Scan, storing driver.Value type []uint8 into type *time.Time
需要将mysql链接字符串加上
parseTime=true
另外需要joins查询的时候,需要先加上preload才能一把查出子属性,如下:
errs := db.Preload("Role").
Joins("JOIN roles ON roles.id = users.roleid").
Where("users.id = ?", userId).
First(&user).GetErrors()