解决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:垃圾回收GC触发条件详解
Apr 24 Golang
go原生库的中bytes.Buffer用法
Apr 25 Golang
golang中实现给gif、png、jpeg图片添加文字水印
Apr 26 Golang
golang中切片copy复制和等号复制的区别介绍
Apr 27 Golang
golang 实现对Map进行键值自定义排序
Apr 28 Golang
golang DNS服务器的简单实现操作
Apr 30 Golang
Go标准容器之Ring的使用说明
May 05 Golang
Golang之sync.Pool使用详解
May 06 Golang
使用golang编写一个并发工作队列
May 08 Golang
go语言中http超时引发的事故解决
Jun 02 Golang
Go语言grpc和protobuf
Apr 13 Golang
Golang并发工具Singleflight
May 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
德生H-501的评价与改造
2021/03/02 无线电
奇怪的PHP引用效率问题分析
2012/03/23 PHP
php格式文件打开的四种方法
2018/02/24 PHP
php获得刚插入数据的id 的几种方法总结
2018/05/31 PHP
php实现单笔转账到支付宝功能
2018/10/09 PHP
精心挑选的12款优秀的基于jQuery的手风琴效果插件和教程
2012/08/22 Javascript
JS、jquery实现几分钟前、几小时前、几天前等时间差显示效果的代码实例分享
2014/04/11 Javascript
推荐4个原生javascript常用的函数
2015/01/12 Javascript
在AngularJS应用中实现一些动画效果的代码
2015/06/18 Javascript
js实现select跳转菜单新窗口效果代码分享(超简单)
2015/08/21 Javascript
在axios中使用params传参的时候传入数组的方法
2018/09/25 Javascript
jquery实现动态改变css样式的方法分析
2019/05/27 jQuery
利用原生JS实现data方法示例代码
2019/05/28 Javascript
只有 20 行的 JavaScript 模板引擎实例详解
2020/05/11 Javascript
jquery轮播图插件使用方法详解
2020/07/31 jQuery
Vue向后台传数组数据,springboot接收vue传的数组数据实例
2020/11/12 Javascript
[36:17]DOTA2上海特级锦标赛 - VGL音乐会全集
2016/03/06 DOTA
对于Python的Django框架使用的一些实用建议
2015/04/03 Python
在Python的Django框架中实现Hacker News的一些功能
2015/04/17 Python
Python 专题二 条件语句和循环语句的基础知识
2017/03/19 Python
python版微信跳一跳游戏辅助
2018/01/11 Python
对python 匹配字符串开头和结尾的方法详解
2018/10/27 Python
celery4+django2定时任务的实现代码
2018/12/23 Python
用python打印菱形的实操方法和代码
2019/06/25 Python
Django 创建新App及其常用命令的实现方法
2019/08/04 Python
基于python爬取有道翻译过程图解
2020/03/31 Python
CSS3实现滚动条动画效果代码分享
2016/08/03 HTML / CSS
欧洲著名的珠宝和手表网上商城:uhrcenter
2017/04/10 全球购物
美赞臣新加坡官方旗舰店:Enfagrow新加坡
2019/05/15 全球购物
公益活动策划方案
2014/01/09 职场文书
银行职员个人的工作自我评价
2014/02/15 职场文书
党的群众路线教育实践活动总结报告
2014/04/28 职场文书
校运动会广播稿300字
2014/10/07 职场文书
教师党员批评与自我批评发言稿
2014/10/15 职场文书
九九重阳节致辞
2015/07/31 职场文书
python解析照片拍摄时间进行图片整理
2022/07/23 Python