解决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 interface判断为空nil的实现代码
Apr 24 Golang
golang import自定义包方式
Apr 29 Golang
golang 在windows中设置环境变量的操作
Apr 29 Golang
Golang 获取文件md5校验的方法以及效率对比
May 08 Golang
Golang标准库syscall详解(什么是系统调用)
May 25 Golang
再次探讨go实现无限 buffer 的 channel方法
Jun 13 Golang
Go语言实现Base64、Base58编码与解码
Jul 26 Golang
手把手教你导入Go语言第三方库
Aug 04 Golang
Golang 并发下的问题定位及解决方案
Mar 16 Golang
Golang使用Panic与Recover进行错误捕获
Mar 22 Golang
深入理解 Golang 的字符串
May 04 Golang
Go语言编译原理之源码调试
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 daodb插入、更新与删除数据
2009/03/19 PHP
PHP 获取远程文件内容的函数代码
2010/03/24 PHP
Zend的MVC机制使用分析(一)
2013/05/02 PHP
smarty实现多级分类的方法
2014/12/05 PHP
PHP嵌套输出缓冲代码实例
2015/05/12 PHP
Javascript 圆角div的实现代码
2009/10/15 Javascript
关于jQuery object and DOM element
2013/04/15 Javascript
值得分享和收藏的Bootstrap学习教程
2016/05/12 Javascript
jQuery实现拖拽页面元素并将其保存到cookie的方法
2016/06/12 Javascript
AngularJS基础 ng-show 指令简单示例
2016/08/03 Javascript
微信小程序 textarea 组件详解及简单实例
2017/01/10 Javascript
web.js.字符串与正则表达式操作
2017/05/13 Javascript
基于vue-upload-component封装一个图片上传组件的示例
2018/10/16 Javascript
layui加载数据显示loading加载完成loading消失的实例代码
2019/09/23 Javascript
用Node写一条配置环境的指令
2019/11/14 Javascript
支付宝小程序实现省市区三级联动
2020/06/21 Javascript
解决vue addRoutes不生效问题
2020/08/04 Javascript
[00:38]TI珍贵瞬间系列(二):笑
2020/08/26 DOTA
Python学习之用pygal画世界地图实例
2017/12/07 Python
TensorFlow 实战之实现卷积神经网络的实例讲解
2018/02/26 Python
Django网络框架之创建虚拟开发环境操作示例
2019/06/06 Python
python3实现二叉树的遍历与递归算法解析(小结)
2019/07/03 Python
django 2.2和mysql使用的常见问题
2019/07/18 Python
python threading和multiprocessing模块基本用法实例分析
2019/07/25 Python
使用pyecharts1.7进行简单的可视化大全
2020/05/17 Python
Python更换pip源方法过程解析
2020/05/19 Python
HTMl5的存储方式sessionStorage和localStorage详解
2014/03/18 HTML / CSS
详解HTML5 window.postMessage与跨域
2017/05/11 HTML / CSS
Ootori在线按摩椅店:一家专业的按摩椅制造商
2019/04/10 全球购物
若通过ObjectOutputStream向一个文件中多次以追加方式写入object,为什么用ObjectInputStream读取这些object时会产生StreamCorruptedException?
2016/10/17 面试题
公司总经理工作职责管理办法
2014/02/28 职场文书
优秀共产党员先进事迹材料
2014/05/06 职场文书
环境保护标语
2014/06/20 职场文书
依法行政工作汇报
2014/10/28 职场文书
导游词之西递宏村
2019/12/10 职场文书
vue2的 router在使用过程中遇到的一些问题
2022/04/13 Vue.js