解决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语言操作数据库及其常规操作的示例代码
Apr 21 Golang
go语言求任意类型切片的长度操作
Apr 26 Golang
golang DNS服务器的简单实现操作
Apr 30 Golang
goland设置颜色和字体的操作
May 05 Golang
golang日志包logger的用法详解
May 05 Golang
关于golang高并发的实现与注意事项说明
May 08 Golang
Go Plugins插件的实现方式
Aug 07 Golang
Go语言实现一个简单的并发聊天室的项目实战
Mar 18 Golang
golang生成并解析JSON
Apr 14 Golang
Golang Elasticsearches 批量修改查询及发送MQ
Apr 19 Golang
在ubuntu下安装go开发环境的全过程
Aug 05 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
三国漫画《火凤燎原》宣布动画化PV放出 预计2020年播出
2020/03/08 国漫
php使用ffmpeg获取视频信息并截图的实现方法
2016/05/03 PHP
javascript实用小函数使用介绍
2013/11/11 Javascript
JS实现仿中关村论坛评分后弹出提示效果的方法
2015/02/23 Javascript
深入理解JavaScript系列(35):设计模式之迭代器模式详解
2015/03/03 Javascript
easyui Droppable组件实现放置特效
2015/08/19 Javascript
JS获取文件大小方法小结
2015/12/08 Javascript
AngularJS实现在ng-Options加上index的解决方法
2016/11/03 Javascript
javascript中Date对象的使用总结
2016/11/21 Javascript
Angularjs中使用指令绑定点击事件的方法
2017/03/30 Javascript
浅析vue深复制
2018/01/29 Javascript
详解VUE自定义组件中用.sync修饰符与v-model的区别
2018/06/26 Javascript
JS实现面向对象继承的5种方式分析
2018/07/21 Javascript
详解如何使用router-link对象方式传递参数?
2019/05/02 Javascript
浅谈webpack和webpack-cli模块源码分析
2020/01/19 Javascript
vue实现前端列表多条件筛选
2020/10/26 Javascript
Python入门篇之数字
2014/10/20 Python
用Python实现一个简单的能够上传下载的HTTP服务器
2015/05/05 Python
python计算时间差的方法
2015/05/20 Python
Python比较2个时间大小的实现方法
2018/04/10 Python
selenium+python设置爬虫代理IP的方法
2018/11/29 Python
Mavi牛仔裤美国官网:土耳其著名牛仔品牌
2016/09/24 全球购物
联想新西兰官方网站:Lenovo New Zealand
2018/10/30 全球购物
如何进行Linux分区优化
2013/02/12 面试题
如何开发安全的AJAX应用
2014/03/26 面试题
外科实习自我鉴定
2013/10/06 职场文书
关于打架的检讨书
2014/01/17 职场文书
保险经纪人求职信
2014/03/11 职场文书
《吃水不忘挖井人》教学反思
2014/04/15 职场文书
检察院院长群众路线教育实践活动个人整改措施
2014/10/04 职场文书
2015年高考寄语或鼓励的话
2015/03/23 职场文书
银行客户经理岗位职责
2015/04/09 职场文书
2015年秋季小学开学标语
2015/07/16 职场文书
MySQL中rank() over、dense_rank() over、row_number() over用法介绍
2022/03/23 MySQL
Pytorch中使用ImageFolder读取数据集时忽略特定文件
2022/03/23 Python
Python开发五子棋小游戏
2022/04/28 Python