golang
(156)Golang Gorm Sum decimal 字段类型
感觉是 Gorm 的 Bug,在使用 Pluck 获取 Sum 结果时总是报错。
而用 Scan 就没有问题。
## 可行的做法 Scan
```
type FHSum struct {
Total float64
}
Go 1.18 版本新特性,及升级步骤
今年 315 唯一的好消息是,Golang 1.18 版本发布。
## 新特性
- 支持泛型 Generics
- 模糊测试 Fuzzing
- Workspaces
- 性能提升 20%。但是由于支持了泛型,编译时间比
golang gorm 的多对多关系 CRUD 操作
例如,一个财务预算管理系统,需要能设置各部门的负责人,以方便控制查看权限。
而且可以一个部门设置多个负责人。
## golang gorm 的数据结构
因为我独立建了个关系表,兼容出现多对多的关系,所以用到了 gorm many2
Golang 使用 sql.NullString 替代 string 类型,避免空字符串引起的唯一索引报错
例如:
用户表的用户名字段为可 Null 字段,但是如果在 golang struct 中定义为 string,则在保存时,不指定值,会默认存入空字符串。
正常情况下并没有什么影响,但是如果恰好这个字段上建了唯一索引。那么非 N
Golang Gorm 数据插入 MySQL 失败 Error 1054: Unknown column 'xx' in 'field list'
原因是,我 Struct 中定义了一个新字段,为了方便在接口返回数据时,能补充一个数据库中没有的信息。
这导致在 Gorm 插入 MySQL 时报错,提示未知字段错误。
## 插入时,忽略指定字段
查了一下,发现 Gorm
sql.NullTime 计算时间差
定了一个类型,实际上是 sql.NullTime。我想计算当前时间与其值的时间差。
```
type NullTime struct {
sql.NullTime
}
```
## sql.NullTime
ht
为 golang 项目添加 Makefile
## 使用 Makefile 的好处
可以管理多个任务的命令。例如,build & run,test。
否则单单一个
```
go test -v ./...
```
就很难记住。
何况还会有很多需要记录的命令
golang gorm 2 中使用 lock for update 锁
查了一下 golang gorm 2 确实支持 lock for update。文档:
https://gorm.io/zh_CN/docs/advanced_query.html#Locking-FOR-UPDATE
```
Golang Gorm Error 1292: Incorrect datetime value: '0000-00-00' for column
## 报错内容
在用 Golang Gorm 更新 MySQL 一条数据时,报错:
```
Error 1292: Incorrect datetime value: '0000-00-00' for column 'create
Goland Gin 将上传的图片文件转存到七牛 CDN
## 安装七牛 golang sdk
```
go get -u github.com/qiniu/go-sdk/v7
go get github.com/qiniu/go-sdk/v7/storage@v7.9.5
```