解决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 相关文章推荐
Golang 实现超大文件读取的两种方法
Apr 27 Golang
golang http使用踩过的坑与填坑指南
Apr 27 Golang
Go使用协程交替打印字符
Apr 29 Golang
解决Golang time.Parse和time.Format的时区问题
Apr 29 Golang
golang slice元素去重操作
Apr 30 Golang
关于golang高并发的实现与注意事项说明
May 08 Golang
Golang的继承模拟实例
Jun 30 Golang
golang生成vcf通讯录格式文件详情
Mar 25 Golang
如何解决goland,idea全局搜索快捷键失效问题
Apr 03 Golang
Golang Elasticsearches 批量修改查询及发送MQ
Apr 19 Golang
Golang日志包的使用
Apr 20 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 更新数据库中断的解决方法
2009/06/05 PHP
定位地理位置PHP判断员工打卡签到经纬度是否在打卡之内
2019/05/23 PHP
Windows服务器中PHP如何安装redis扩展
2019/09/27 PHP
文本框的字数限制功能jquery插件
2009/11/24 Javascript
JS类的封装及实现代码
2009/12/02 Javascript
jQuery 位置函数offset,innerWidth,innerHeight,outerWidth,outerHeight,scrollTop,scrollLeft
2010/03/23 Javascript
javascript 函数参数限制说明
2010/11/19 Javascript
jBox 2.3基于jquery的最新多功能对话框插件 常见使用问题解答
2011/11/10 Javascript
jquery 模板的应用示例
2013/11/12 Javascript
IE浏览器中图片onload事件无效的解决方法
2014/04/29 Javascript
jQuery中大家不太了解的几个方法
2015/03/04 Javascript
深入理解jQuery事件绑定
2016/06/02 Javascript
Js 获取当前函数参数对象的实现代码
2016/06/20 Javascript
在react-router4中进行代码拆分的方法(基于webpack)
2018/03/08 Javascript
仿ElementUI实现一个Form表单的实现代码
2019/04/23 Javascript
JS中的模糊查询功能
2019/12/08 Javascript
vue如何搭建多页面多系统应用
2020/06/17 Javascript
基于原生js实现判断元素是否有指定class名
2020/07/11 Javascript
[49:35]2018DOTA2亚洲邀请赛3月30日 小组赛A组 KG VS TNC
2018/03/31 DOTA
Python中模拟enum枚举类型的5种方法分享
2014/11/22 Python
Python守护进程用法实例分析
2015/06/04 Python
Python读写Json涉及到中文的处理方法
2016/09/12 Python
Python批量查询域名是否被注册过
2017/06/21 Python
Python Grid使用和布局详解
2018/06/30 Python
图文详解python安装Scrapy框架步骤
2019/05/20 Python
Python文件操作模拟用户登陆代码实例
2020/06/09 Python
Python自定义sorted排序实现方法详解
2020/09/18 Python
谷歌浏览器小字体处理方案即12px以下字体
2013/12/17 HTML / CSS
纯HTML5+CSS3制作生日蛋糕(代码易懂)
2016/11/16 HTML / CSS
安踏官方商城:anta.cn
2019/12/16 全球购物
你经历的项目中的SCM配置项主要有哪些?什么是配置项?
2013/11/04 面试题
高中生学习生活的自我评价
2013/11/27 职场文书
外企求职信范文分享
2013/12/31 职场文书
网络工程师专家职业发展路线
2014/02/14 职场文书
python实现层次聚类的方法
2021/11/01 Python
关于JavaScript 中 if包含逗号表达式
2021/11/27 Javascript