【踩坑】Gorm报错
前言
Gorm报错踩坑笔记
报错
- 报错:
invalid value, should be pointer to struct or slice
原因
- 在
Delete()
中没有传递指针类型数据
解决问题
- 将
db.Where("id = ?", 1).Delete(model.User{})
改为db.Where("id = ?", 1).Delete(&model.User{})
报错
- 报错:
reflect: reflect.Value.Set using unaddressable value
原因
- 将
db.Where("id = ?", 1).Find(model.User{})
改为db.Where("id = ?", 1).Find(&model.User{})
解决问题
- 在调用
Find()
函数时传递指针数据作为参数
报错
- 报错:
sql: Scan error on column index 3, name "created_at": unsupported Scan, storing driver.Value type []uint8 into type *time.Time
原因
- gorm无法转换created_at的数据类型
解决问题
- 在获取数据库连接时,将dsn末尾追加
parseTime=True
参数
1 | dsn := username + ":" + password + "@tcp(" + host + ":" + port + ")/" + databaseName + "?charset=utf8mb4&parseTime=True&loc=Local" |