【踩坑】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"

完成

参考文献

博客园——gtea