解决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原生库的中bytes.Buffer用法
Apr 25 Golang
Go使用协程交替打印字符
Apr 29 Golang
Go语言 go程释放操作(退出/销毁)
Apr 30 Golang
完美解决golang go get私有仓库的问题
May 05 Golang
golang switch语句的灵活写法介绍
May 06 Golang
Go 在 MongoDB 中常用查询与修改的操作
May 07 Golang
K8s部署发布Golang应用程序的实现方法
Jul 16 Golang
Go Plugins插件的实现方式
Aug 07 Golang
Go 中的空白标识符下划线
Mar 25 Golang
Golang日志包的使用
Apr 20 Golang
Golang 切片(Slice)实现增删改查
Apr 22 Golang
Go gorilla securecookie库的安装使用详解
Aug 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
常用星际术语索引(新手指南)
2020/03/04 星际争霸
php处理复杂xml数据示例
2016/07/11 PHP
PHP实现求两个字符串最长公共子串的方法示例
2017/11/17 PHP
php实现数字补零的方法总结
2018/09/12 PHP
thinkPHP3.2使用RBAC实现权限管理的实现
2019/08/27 PHP
浅谈laravel5.5 belongsToMany自身的正确用法
2019/10/17 PHP
javascript 异常处理使用总结
2009/06/21 Javascript
js获取单选框或复选框值及操作
2012/12/18 Javascript
js取得url地址参数实例
2013/02/22 Javascript
JavaScript设置body高度为浏览器高度的方法
2015/02/09 Javascript
jQuery简单实现遍历数组的方法
2015/04/14 Javascript
js中的关联数组与普通数组详解
2016/07/27 Javascript
ionic中列表项增加和删除的实现方法
2017/01/22 Javascript
jQuery实现用户输入自动完成功能
2017/02/13 Javascript
node实现定时发送邮件的示例代码
2017/08/26 Javascript
node.js 发布订阅模式的实例
2017/09/10 Javascript
单页面vue引入百度统计的使用方法示例详解
2018/10/13 Javascript
python实现将英文单词表示的数字转换成阿拉伯数字的方法
2015/07/02 Python
Python中max函数用法实例分析
2015/07/17 Python
Python基于有道实现英汉字典功能
2015/07/25 Python
python轻松查到删除自己的微信好友
2016/01/10 Python
python中range()与xrange()用法分析
2016/09/21 Python
Python深入06——python的内存管理详解
2016/12/07 Python
Python 3中print函数的使用方法总结
2017/08/08 Python
python使用xslt提取网页数据的方法
2018/02/23 Python
如何使用django的MTV开发模式返回一个网页
2019/07/22 Python
TensorFlow MNIST手写数据集的实现方法
2020/02/05 Python
浅谈pycharm导入pandas包遇到的问题及解决
2020/06/01 Python
Python绘制组合图的示例
2020/09/18 Python
用CSS3实现Win8风格的方格导航菜单效果
2013/04/10 HTML / CSS
C#如何调用Word并打开一个Word文档
2013/05/08 面试题
大龄毕业生求职别忘职业规划
2014/03/11 职场文书
意向书范本
2014/07/29 职场文书
财政局长个人总结
2015/03/04 职场文书
2016新年致辞
2015/08/01 职场文书
MySQL系列之二 多实例配置
2021/07/02 MySQL