解决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 25 Golang
用golang如何替换某个文件中的字符串
Apr 25 Golang
golang中实现给gif、png、jpeg图片添加文字水印
Apr 26 Golang
Goland使用Go Modules创建/管理项目的操作
May 06 Golang
Go 在 MongoDB 中常用查询与修改的操作
May 07 Golang
Go timer如何调度
Jun 09 Golang
Go 语言下基于Redis分布式锁的实现方式
Jun 28 Golang
试了下Golang实现try catch的方法
Jul 01 Golang
Go语言读取txt文档的操作方法
Jan 22 Golang
Go语言grpc和protobuf
Apr 13 Golang
golang用type-switch判断interface的实际存储类型
Apr 14 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实现多文件上传的方法
2015/07/08 PHP
thinkphp中的url跳转用法分析
2016/07/12 PHP
PHP聚合式迭代器接口IteratorAggregate用法分析
2017/12/28 PHP
javaScript checkbox 全选/反选及批量删除
2010/04/28 Javascript
仿中关村在线首页弹出式广告插件(jQuery版)
2012/05/03 Javascript
分享精心挑选的12款优秀jQuery Ajax分页插件和教程
2012/08/09 Javascript
简介JavaScript中strike()方法的使用
2015/06/08 Javascript
javascript实现图片上传前台页面
2015/08/18 Javascript
JavaScript 性能优化小结
2015/10/12 Javascript
Angularjs实现多个页面共享数据的方式
2016/03/29 Javascript
Window.Open打开窗体和if嵌套代码
2016/04/15 Javascript
全面了解js中的script标签
2016/07/04 Javascript
js实现自动图片轮播代码
2017/03/22 Javascript
vue.js 使用v-if v-else发现没有执行解决办法
2017/05/15 Javascript
Vue通过URL传参如何控制全局console.log的开关详解
2017/12/07 Javascript
详解webpack+express多页站点开发
2017/12/22 Javascript
使用vue-aplayer插件时出现的问题的解决
2018/03/02 Javascript
vue如何实现自定义底部菜单栏
2019/07/01 Javascript
jQuery实现每日秒杀商品倒计时功能
2019/09/06 jQuery
Vue分页效果与购物车功能
2019/12/13 Javascript
[03:37]2016完美“圣”典 风云人物:Mikasa专访
2016/12/07 DOTA
python threading模块操作多线程介绍
2015/04/08 Python
举例讲解Python中装饰器的用法
2015/04/27 Python
python3序列化与反序列化用法实例
2015/05/26 Python
python中安装模块包版本冲突问题的解决
2017/05/02 Python
python urllib爬取百度云连接的实例代码
2017/06/19 Python
Python实现拷贝/删除文件夹的方法详解
2018/08/29 Python
pycharm中成功运行图片的配置教程
2018/10/28 Python
python 通过SSHTunnelForwarder隧道连接redis的方法
2019/02/19 Python
Python中一个for循环循环多个变量的示例
2019/07/16 Python
Python类反射机制使用实例解析
2019/12/30 Python
Mio Skincare中文官网:肌肤和身体护理
2016/10/26 全球购物
绘画设计学生的个人自我评价
2013/09/20 职场文书
教师节倡议书
2014/08/30 职场文书
《平移和旋转》教学反思
2016/02/19 职场文书
如何用python绘制雷达图
2021/04/24 Python