解决Go gorm踩过的坑


Posted in Golang onApril 30, 2021

使用gorm.Model后无法查询数据

Scan error on column index 1, name “created_at”

提示:

Scan error on column index 1, name “created_at”: unsupported Scan, storing driver.Value type []uint8

解决办法:

打开数据库的时候加上parseTime=true

root:123456@tcp(127.0.0.1:3306)/mapdb?charset=utf8&parseTime=true

补充:golang Gorm 的使用总结

建立结构体时可以通过 TableName来指定要查找的表名

func (CoinLog) TableName() string {
 return "coin_log"
}

通过gorm的映射指定对应表的列

ID            int64              `gorm:"column:id" json:"id"`

通过预加载可以实现各个模型之间的一对多关系,例如下面的代码,其中device结构体对应多个DeviceModular,DeviceModular又有多个CommWeimaqi

通过下面的查询语句可以查询出对应的相关联数据

db.SqlDB.Preload("DeviceModular", "modular_type=1").Preload("DeviceModular.CommWeimaqi").Find(&device)

gorm暂时不支持批量插入

可以通过下面的方式完成批量插入的功能

tx := db.SqlDB.Begin()
  sqlStr := "INSERT INTO report_form (id,create_time,choose_count, device_fall_count,game_order_count,coin_count,member_count," +
   "day_member_count,visit_count,lgz_coin_count,weimaqi_coin_count,store_id,real_coin_count,m_coin_count,coin_spec) VALUES "
  vals := []interface{}{}
  const rowSQL = "(?,?, ?, ?, ?, ?, ?, ?, ?, ?,?,?,?,?,?)"
  var inserts []string
  for _, elem := range reportForms {
   inserts = append(inserts, rowSQL)
   vals = append(vals, elem.ID, elem.CreateTime, elem.ChooseCount, elem.DeviceFallCount, elem.GameOrderCount, elem.CoinCount, elem.MemberCount, elem.DayMemberCount, elem.VisitCount, elem.LgzCoinCount, elem.WeimaqiCoinCount, elem.StoreId, elem.RealCoinCount, elem.MCoinCount, elem.CoinSpec)
  }
  sqlStr = sqlStr + strings.Join(inserts, ",")
  err := tx.Exec(sqlStr, vals...).Error
  if  err != nil {
   tx.Rollback()
   fmt.Print(err)
  }else {
   tx.Commit()
  }

以上为个人经验,希望能给大家一个参考,也希望大家多多支持三水点靠木。如有错误或未考虑完全的地方,望不吝赐教。

Golang 相关文章推荐
Go语言带缓冲的通道实现
Apr 26 Golang
golang 接口嵌套实现复用的操作
Apr 29 Golang
使用Golang的channel交叉打印两个数组的操作
Apr 29 Golang
go语言基础 seek光标位置os包的使用
May 09 Golang
再次探讨go实现无限 buffer 的 channel方法
Jun 13 Golang
手把手教你导入Go语言第三方库
Aug 04 Golang
golang 语言中错误处理机制
Aug 30 Golang
深入理解go slice结构
Sep 15 Golang
简单聊聊Golang中defer预计算参数
Mar 25 Golang
Golang 切片(Slice)实现增删改查
Apr 22 Golang
Go gRPC进阶教程gRPC转换HTTP
Jun 16 Golang
Go语言测试库testify使用学习
Jul 23 Golang
Golang 如何实现函数的任意类型传参
Apr 29 #Golang
解决Golang time.Parse和time.Format的时区问题
Apr 29 #Golang
Golang 使用Map实现去重与set的功能操作
Apr 29 #Golang
使用Golang的channel交叉打印两个数组的操作
Apr 29 #Golang
Go使用协程交替打印字符
Apr 29 #Golang
golang goroutine顺序输出方式
Apr 29 #Golang
golang 在windows中设置环境变量的操作
You might like
php+mysql分页代码详解
2008/03/27 PHP
php关于array_multisort多维数组排序的使用说明
2011/01/04 PHP
php获取系统变量方法小结
2015/05/29 PHP
js字符串的各种格式的转换 ToString,Format
2011/08/08 Javascript
一个基于jQuery的树型插件(OrangeTree)使用介绍
2012/05/03 Javascript
Extjs表单常见验证小结
2014/03/07 Javascript
页面装载js及性能分析方法介绍
2014/03/21 Javascript
jquery 扑捉回车键事件代码
2014/04/24 Javascript
JavaScript字符串对象substr方法入门实例(用于截取字符串)
2014/10/16 Javascript
JS根据key值获取URL中的参数值及把URL的参数转换成json对象
2015/08/26 Javascript
基于Bootstrap+jQuery.validate实现表单验证
2016/05/30 Javascript
vue项目在安卓低版本机显示空白的原因分析(两种)
2018/09/04 Javascript
JS图片预加载三种实现方法解析
2020/05/08 Javascript
解决vue安装less报错Failed to compile with 1 errors的问题
2020/10/22 Javascript
利用PHP实现递归删除链表元素的方法示例
2020/10/23 Javascript
Ant Design Pro 之 ProTable使用操作
2020/10/31 Javascript
Nuxt.js nuxt-link与router-link的区别说明
2020/11/06 Javascript
给Python中的MySQLdb模块添加超时功能的教程
2015/05/05 Python
python logging日志模块以及多进程日志详解
2018/04/18 Python
Python3数据库操作包pymysql的操作方法
2018/07/16 Python
numpy添加新的维度:newaxis的方法
2018/08/02 Python
python实现狄克斯特拉算法
2019/01/17 Python
Python3.7 dataclass使用指南小结
2019/02/22 Python
Matplotlib使用字符串代替变量绘制散点图的方法
2020/02/17 Python
浅谈python输出列表元素的所有排列形式
2020/02/26 Python
Python 使用 PyQt5 开发的关机小工具分享
2020/07/16 Python
Python和Bash结合在一起的方法
2020/11/13 Python
Nice Kicks网上商店:ShopNiceKicks.com
2018/12/25 全球购物
澳洲网红粉泥面膜:Sand & Sky
2019/08/13 全球购物
俄罗斯品牌服装和鞋子的在线商店:KUPIVIP
2019/10/27 全球购物
优秀食品类广告词
2014/03/19 职场文书
住宅质量保证书
2014/04/29 职场文书
合同权益转让协议书模板
2014/11/18 职场文书
餐厅收银员岗位职责
2015/04/07 职场文书
2016年社区六一儿童节活动总结
2016/04/06 职场文书
Oracle删除归档日志及添加定时任务
2022/06/28 Oracle