解决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中semaphore(信号量)源码
Apr 03 Golang
go语言map与string的相互转换的实现
Apr 07 Golang
Golang二维切片初始化的实现
Apr 08 Golang
浅谈Golang 嵌套 interface 的赋值问题
Apr 29 Golang
解决Golang time.Parse和time.Format的时区问题
Apr 29 Golang
golang 比较浮点数的大小方式
May 02 Golang
Go标准容器之Ring的使用说明
May 05 Golang
Golang并发操作中常见的读写锁详析
Aug 30 Golang
Go语言安装并操作redis的go-redis库
Apr 14 Golang
实现GO语言对数组切片去重
Apr 20 Golang
Golang 结构体数据集合
Apr 22 Golang
基于Python实现西西成语接龙小助手
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
php adodb连接带密码access数据库实例,测试成功
2008/05/14 PHP
探讨如何使用SimpleXML函数来加载和解析XML文档
2013/06/07 PHP
深入PHP5中的魔术方法详解
2013/06/17 PHP
PHP链接MySQL的常用扩展函数
2014/10/23 PHP
Yii实现多数据库主从读写分离的方法
2014/12/29 PHP
PHP后台实现微信小程序登录
2018/08/03 PHP
php使用curl模拟浏览器表单上传文件或者图片的方法
2018/11/10 PHP
Javascript匿名函数的一种应用 代码封装
2010/06/27 Javascript
iframe的父子窗口之间的对象相互调用基本用法
2013/09/03 Javascript
jquery动态调整div大小使其宽度始终为浏览器宽度
2014/06/06 Javascript
深入浅出讲解ES6的解构
2016/08/03 Javascript
js变量提升深入理解
2016/09/16 Javascript
使用jquery.qrcode.js生成二维码插件
2016/10/17 Javascript
解决JQuery全选/反选第二次失效的问题
2017/10/11 jQuery
javascript回调函数详解
2018/02/06 Javascript
vue实现点击选中,其他的不选中方法
2018/09/05 Javascript
用WebStorm进行Angularjs 2开发(环境篇:Windows 10,Angular-cli方式)
2018/12/05 Javascript
Vue实现数据请求拦截
2019/10/23 Javascript
JS实现图片幻灯片效果代码实例
2020/05/21 Javascript
[01:30:55]VG vs Mineski Supermajor 败者组 BO3 第三场 6.6
2018/06/07 DOTA
在python中的socket模块使用代理实例
2014/05/29 Python
python语言使用技巧分享
2016/05/31 Python
对django中foreignkey的简单使用详解
2019/07/28 Python
Python下应用opencv 实现人脸检测功能
2019/10/24 Python
通过实例学习Python Excel操作
2020/01/06 Python
英国知名衬衫品牌美国网站:Charles Tyrwhitt美国
2016/08/28 全球购物
澳大利亚在线购买葡萄酒:The Wine Collective
2020/02/20 全球购物
如何在Oracle中查看各个表、表空间占用空间的大小
2015/10/31 面试题
中西医专业毕业生职业规划书
2014/02/24 职场文书
文明美德伴我成长演讲稿
2014/05/12 职场文书
中职生自荐信范文
2014/06/15 职场文书
白酒营销策划方案
2014/08/17 职场文书
学校组织向国旗敬礼活动方案(中小学适用)
2014/09/27 职场文书
导游词300字
2015/02/13 职场文书
工程部岗位职责范本
2015/04/11 职场文书
MySQL库表名大小写的选择
2021/06/05 MySQL