解决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判断key是否在map中的代码
Apr 24 Golang
go:垃圾回收GC触发条件详解
Apr 24 Golang
golang中的空slice案例
Apr 27 Golang
go 原生http web 服务跨域restful api的写法介绍
Apr 27 Golang
goland 恢复已更改文件的操作
Apr 28 Golang
golang goroutine顺序输出方式
Apr 29 Golang
golang 实用库gotable的具体使用
Jul 01 Golang
Go语言基础知识点介绍
Jul 04 Golang
Go 语言中 20 个占位符的整理
Oct 16 Golang
Go语言基础map用法及示例详解
Nov 17 Golang
Golang获取List列表元素的四种方式
Apr 20 Golang
深入理解 Golang 的字符串
May 04 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
Smarty最简单实现列表奇偶变色的方法
2015/07/01 PHP
PHP工程师VIM配置分享
2015/12/15 PHP
CI框架数据库查询之join用法分析
2016/05/18 PHP
jQuery EasyUI NumberBox(数字框)的用法
2010/07/08 Javascript
De facto standard 世界上不可思议的事实标准
2010/08/29 Javascript
javascript获取函数名称、函数参数、对象属性名称的代码实例
2014/04/12 Javascript
jQuery操作select下拉框的text值和value值的方法
2014/05/31 Javascript
JavaScript中原型和原型链详解
2015/02/11 Javascript
Javascript核心读书有感之表达式和运算符
2015/02/11 Javascript
JavaScript中Date.toSource()方法的使用教程
2015/06/12 Javascript
解决js页面滚动效果scrollTop在FireFox与Chrome浏览器间的兼容问题的方法
2015/12/03 Javascript
Javascript中的Prototype到底是什么
2016/02/16 Javascript
jQuery插件ajaxfileupload.js实现上传文件
2020/10/23 Javascript
jQuery弹出层后禁用底部滚动条(移动端关闭回到原位置)
2016/08/29 Javascript
js实现淡入淡出轮播切换功能
2017/01/13 Javascript
ES6使用let命令更简单的实现块级作用域实例分析
2017/03/31 Javascript
JS实现留言板功能
2017/06/17 Javascript
JavaScript中Require调用js的实例分享
2017/10/27 Javascript
基于vue循环列表时点击跳转页面的方法
2018/08/31 Javascript
使用 UniApp 实现小程序的微信登录功能
2020/06/09 Javascript
[01:11:21]DOTA2-DPC中国联赛 正赛 VG vs Elephant BO3 第一场 3月6日
2021/03/11 DOTA
一则python3的简单爬虫代码
2014/05/26 Python
python遍历文件夹,指定遍历深度与忽略目录的方法
2018/07/11 Python
Python flask框架post接口调用示例
2019/07/03 Python
python统计字符串中字母出现次数代码实例
2020/03/02 Python
jupyter notebook 重装教程
2020/04/16 Python
澳大利亚婴儿礼品公司:The Baby Gift Company
2018/11/04 全球购物
美国手工艺品市场的领导者:Annie’s
2019/04/04 全球购物
Farfetch台湾官网:奢侈品牌时尚购物平台
2019/06/17 全球购物
Farfetch中文官网:奢侈品牌时尚购物平台
2020/03/15 全球购物
华为菲律宾官方网站:HUAWEI Philippines
2021/02/23 全球购物
接口中的方法可以是abstract的吗
2015/07/23 面试题
2014年车间工作总结
2014/11/21 职场文书
初一数学教学反思
2016/02/17 职场文书
Redis安装使用RedisJSON模块的方法
2022/03/23 Redis
SpringBoot集成MongoDB实现文件上传的步骤
2022/04/18 MongoDB