解决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 Gin实现文件上传下载的示例代码
Apr 02 Golang
win10下go mod配置方式
Apr 25 Golang
golang正则之命名分组方式
Apr 25 Golang
解决Golang time.Parse和time.Format的时区问题
Apr 29 Golang
Golang之sync.Pool使用详解
May 06 Golang
Go 自定义package包设置与导入操作
May 06 Golang
Golang的继承模拟实例
Jun 30 Golang
Go 语言中 20 个占位符的整理
Oct 16 Golang
Go语言基础函数基本用法及示例详解
Nov 17 Golang
Go语言读取txt文档的操作方法
Jan 22 Golang
Go语言特点及基本数据类型使用详解
Mar 21 Golang
Go并发4种方法简明讲解
Apr 06 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
javascript,php获取函数参数对象的代码
2011/02/03 PHP
php实现将数组转换为XML的方法
2015/03/09 PHP
PHP实现自动对图片进行滚动显示的方法
2015/03/12 PHP
CI框架封装的常用图像处理方法(缩略图,水印,旋转,上传等)
2016/11/22 PHP
php脚本守护进程原理与实现方法详解
2017/07/20 PHP
PHP接入微信H5支付的方法示例
2019/10/28 PHP
NodeJS框架Express的模板视图机制分析
2011/07/19 NodeJs
JS常用正则表达式总结
2013/11/12 Javascript
JS使用ajax方法获取指定url的head信息中指定字段值的方法
2015/03/24 Javascript
javascript中sort() 方法使用详解
2015/08/30 Javascript
Jquery使用小技巧汇总
2015/12/29 Javascript
jQuery 中ajax异步调用的四种方式
2016/06/28 Javascript
JS实现仿UC浏览器前进后退效果的实例代码
2017/07/17 Javascript
JS实现图片转换成base64的各种应用场景实例分析
2018/06/22 Javascript
详解nvm管理多版本node踩坑
2019/07/26 Javascript
详解Vue template 如何支持多个根结点
2020/02/10 Javascript
javascript 函数的暂停和恢复实例详解
2020/04/25 Javascript
Vue点击切换Class变化,实现Active当前样式操作
2020/07/17 Javascript
Python使用htpasswd实现基本认证授权的例子
2014/06/10 Python
Python3 正在毁灭 Python的原因分析
2014/11/28 Python
Python常见内置高效率函数用法示例
2018/07/31 Python
pygame游戏之旅 python和pygame安装教程
2018/11/20 Python
pytorch 转换矩阵的维数位置方法
2018/12/08 Python
python爬虫增加访问量的方法
2019/08/22 Python
使用PyOpenGL绘制三维坐标系实例
2019/12/24 Python
Html5页面在微信端的分享的实现方法
2018/08/30 HTML / CSS
戴尔美国官方折扣店:Dell Outlet
2018/02/13 全球购物
下面这个程序执行后会有什么错误或者效果
2014/11/03 面试题
统计系教授推荐信
2014/02/28 职场文书
村班子对照检查材料
2014/08/18 职场文书
卖车协议书范例
2014/09/16 职场文书
幼儿园五一劳动节活动总结
2015/02/09 职场文书
药品开票员岗位职责
2015/04/15 职场文书
暑期社会实践新闻稿
2015/07/17 职场文书
2015初中团支部工作总结
2015/07/21 职场文书
2016年社区文体活动总结
2016/04/06 职场文书