解决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语言-为什么返回值为接口类型,却返回结构体
Apr 24 Golang
golang 实现Location跳转方式
May 02 Golang
golang gopm get -g -v 无法获取第三方库的解决方案
May 05 Golang
Golang之sync.Pool使用详解
May 06 Golang
Go语言实现Snowflake雪花算法
Jun 08 Golang
Go 语言结构实例分析
Jul 04 Golang
K8s部署发布Golang应用程序的实现方法
Jul 16 Golang
go使用Gin框架利用阿里云实现短信验证码功能
Aug 04 Golang
一文搞懂Golang 时间和日期相关函数
Dec 06 Golang
Go Grpc Gateway兼容HTTP协议文档自动生成网关
Jun 16 Golang
Go语言怎么使用变长参数函数
Jul 15 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 clearstatcache()函数详解
2010/03/02 PHP
PHP XML error parsing SOAP payload on line 1
2010/06/17 PHP
php类中private属性继承问题分析
2012/11/01 PHP
PHP简单实现“相关文章推荐”功能的方法
2014/07/19 PHP
PHP设计模式之原型模式定义与用法详解
2018/04/03 PHP
浅谈PHP匿名函数和闭包
2019/03/08 PHP
Cookie 注入是怎样产生的
2009/04/08 Javascript
一些常用且实用的原生JavaScript函数
2010/09/08 Javascript
jquery 学习之二 属性 文本与值(text,val)
2010/11/25 Javascript
jquery里的each使用方法详解
2010/12/22 Javascript
基于jquery扩展漂亮的下拉框可以二次修改
2013/11/19 Javascript
JQuery操作iframe父页面与子页面的元素与方法(实例讲解)
2013/11/20 Javascript
JS获得选取checkbox整行数据的方法
2015/01/28 Javascript
JavaScript时间转换处理函数
2015/04/14 Javascript
JS检索下拉列表框中被选项目的索引号(selectedIndex)
2019/12/17 Javascript
[01:03:47]VP vs NewBee Supermajor 胜者组 BO3 第一场 6.5
2018/06/06 DOTA
python实现的简单窗口倒计时界面实例
2015/05/05 Python
详解Django中的form库的使用
2015/07/18 Python
Python模拟三级菜单效果
2017/09/11 Python
python批量读取txt文件为DataFrame的方法
2018/04/03 Python
pandas数据清洗,排序,索引设置,数据选取方法
2018/05/18 Python
python中@property和property函数常见使用方法示例
2019/10/21 Python
Python文本处理简单易懂方法解析
2019/12/19 Python
Python安装并操作redis实现流程详解
2020/10/13 Python
Python爬虫scrapy框架Cookie池(微博Cookie池)的使用
2021/01/13 Python
南非最受欢迎的时尚品牌:MRP
2016/09/18 全球购物
联想德国官网:Lenovo Germany
2018/07/04 全球购物
加拿大在线旅游公司:Flighthub
2019/03/11 全球购物
Farfetch澳大利亚官网:Farfetch Australia
2020/04/26 全球购物
在子网210.27.48.21/30种有多少个可用地址?分别是什么?
2014/07/27 面试题
机械设计专业应届生求职信
2013/11/21 职场文书
教导处工作制度
2014/01/18 职场文书
2014年最新学习全国两会精神心得
2014/03/17 职场文书
供电工程专业求职信
2014/08/09 职场文书
Nginx tp3.2.3 404问题解决方案
2021/03/31 Servers
Java实现二分搜索树的示例代码
2022/03/17 Java/Android