解决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语言中的UTF-8实现
Apr 26 Golang
Golang 空map和未初始化map的注意事项说明
Apr 29 Golang
解决Golang time.Parse和time.Format的时区问题
Apr 29 Golang
解决golang post文件时Content-Type出现的问题
May 02 Golang
golang elasticsearch Client的使用详解
May 05 Golang
go类型转换及与C的类型转换方式
May 05 Golang
golang gopm get -g -v 无法获取第三方库的解决方案
May 05 Golang
Go语言设计模式之结构型模式
Jun 22 Golang
Golang中channel的原理解读(推荐)
Oct 16 Golang
GO语言异常处理分析 err接口及defer延迟
Apr 14 Golang
GoFrame gredis缓存DoVar Conn连接对象 自动序列化GoFrame gredisDo/DoVar方法Conn连接对象自动序列化/反序列化总结
Jun 14 Golang
Go语言编译原理之变量捕获
Aug 05 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
关于拼配咖啡,你要知道
2021/03/03 咖啡文化
PHP基于GD库的图像处理方法小结
2016/09/27 PHP
js类中获取外部函数名的方法与代码
2007/09/12 Javascript
jQuery 使用手册(六)
2009/09/23 Javascript
javascript 处理事件绑定的一些兼容写法
2009/12/24 Javascript
纯JavaScript实现HTML5 Canvas六种特效滤镜示例
2013/06/28 Javascript
JavaScript通过function定义对象并给对象添加toString()方法实例分析
2015/03/23 Javascript
AngularJS实现textarea记录只能输入规定数量的字符并显示
2016/04/26 Javascript
JS中Map和ForEach的区别
2018/02/05 Javascript
JS实现为动态添加的元素增加事件功能示例【基于事件委托】
2018/03/21 Javascript
vue 监听键盘回车事件详解 @keyup.enter || @keyup.enter.native
2018/08/25 Javascript
JS把字符串格式的时间转换成几秒前、几分钟前、几小时前、几天前等格式
2019/07/10 Javascript
Vue修改项目启动端口号方法
2019/11/07 Javascript
Python2.x和3.x下maketrans与translate函数使用上的不同
2015/04/13 Python
Python通过poll实现异步IO的方法
2015/06/04 Python
利用python发送和接收邮件
2016/09/27 Python
用python实现简单EXCEL数据统计的实例
2017/01/24 Python
Pipenv一键搭建python虚拟环境的方法
2018/05/22 Python
idea创建springMVC框架和配置小文件的教程图解
2018/09/18 Python
python打印9宫格、25宫格等奇数格 满足横竖斜相加和相等
2019/07/19 Python
python 实现aes256加密
2020/11/27 Python
如何查看浏览器对html5的支持情况
2020/12/15 HTML / CSS
加拿大租车网站:Enterprise Rent-A-Car
2018/07/26 全球购物
eBay荷兰购物网站:eBay.nl
2020/06/26 全球购物
教师自我评价范例
2013/09/24 职场文书
产品销售员岗位职责
2013/12/18 职场文书
初三新学期计划书
2014/05/03 职场文书
管理标语大全
2014/06/24 职场文书
优秀党员学习焦裕禄精神思想汇报范文
2014/09/10 职场文书
文明班级申报材料
2014/12/24 职场文书
大国崛起英国观后感
2015/06/02 职场文书
环保守法证明
2015/06/24 职场文书
2015大学生暑期实习报告
2015/07/13 职场文书
2016党员学习心得体会范文
2016/01/23 职场文书
浅谈Java父子类加载顺序
2021/08/04 Java/Android
Python中非常使用的6种基本变量的操作与技巧
2022/03/22 Python