golang数据库使用遇到的坑

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()

你可能感兴趣的:(编程基础之数据库)