j记录一次gorm 使用协程 插入数据一直报错问题 -Duplicate entry ‘95‘ for key ‘PRIMARY‘ [14.649ms] [rows

2023-05-16

文章目录

  • 问题描述
  • 问题解决

问题描述

报错代码如下

func GetSystemInfoSave() {
	var sysInfo SystemInfo
	db := variable.GormDbMysql.Table(dbSystemInfo)
	//表不存在时自动创建表, 写到查询语句前面,不然会报错
	err := db.AutoMigrate(&SystemInfo{})
	if err != nil {
		LogInfo("db  err")
		return
	}
	for {
		sysInfo.CpuPercent = GetcpuPercent()
		sysInfo.CpuCount, _ = cpu.Counts(true)
		sysInfo.MemTotal = GetMemTotal()
		sysInfo.MenUsed = GetMemUsed()
		sysInfo.MemPercent = GetMemPercent()
		sysInfo.DiskTotal = GetdiskTotal()
		sysInfo.DiskUsed = GetdiskUsed()
		sysInfo.DiskPercent = GetdiskPercent()
		timeStr := time.Now().Format("2006-01-02 15:04:05")
		sysInfo.CreatedTime = timeStr
		sysInfo.UpdatedTime = timeStr
		db.Create(&sysInfo)
		time.Sleep(2 * time.Second)
	}
}

报错信息如下

: Duplicate entry '95' for key 'PRIMARY' [14.649ms] [rows
:1] INSERT INTO `system_info` (`created_time`,`updated_time`,`cpu_percent`,`cpu_count`,`mem_total`,`men_used`,`mem_percent`,`disk_total`,`disk_used`,`disk_percent`,`id`) VALUES ('2023-03-26 00:19:00','2023-03-26 00:19:00',1.200000,1
2,24.000000,12.300000,51.000000,1155.000000,977.200000,84.600000,95)\n"}

问题解决

解决问题代码, 改变一行代码位置
将 var sysInfo SystemInfo 代码写入 for循环中, 分析原因是变量 gorm插入数据之后会返回 数据的id给变量systemInfo, 然而变量没被释放,导致再次插入数据报 重复的id错误问题

func GetSystemInfoSave() {
	db := variable.GormDbMysql.Table(dbSystemInfo)
	//表不存在时自动创建表, 写到查询语句前面,不然会报错
	err := db.AutoMigrate(&SystemInfo{})
	if err != nil {
		LogInfo("db  err")
		return
	}
	for {
		var sysInfo SystemInfo
		sysInfo.CpuPercent = GetcpuPercent()
		sysInfo.CpuCount, _ = cpu.Counts(true)
		sysInfo.MemTotal = GetMemTotal()
		sysInfo.MenUsed = GetMemUsed()
		sysInfo.MemPercent = GetMemPercent()
		sysInfo.DiskTotal = GetdiskTotal()
		sysInfo.DiskUsed = GetdiskUsed()
		sysInfo.DiskPercent = GetdiskPercent()
		timeStr := time.Now().Format("2006-01-02 15:04:05")
		sysInfo.CreatedTime = timeStr
		sysInfo.UpdatedTime = timeStr
		db.Create(&sysInfo)
		time.Sleep(2 * time.Second)
	}

}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

j记录一次gorm 使用协程 插入数据一直报错问题 -Duplicate entry ‘95‘ for key ‘PRIMARY‘ [14.649ms] [rows 的相关文章

  • 通过Java编程语言读取android中的/dev/input/event

    我想记录 Android 手机上完成的所有输入事件 将其保存在某个文件中 然后使用该文件查看用户输入在什么时间发生 AFAIK 我应该调用 dev input event 获取输入事件 请指导我如何通过 Android 活动执行相同的操作
  • 使用字典中的键反转多个值

    我对 Python 和整体编程还很陌生 所以请耐心等待 我有一本字典 Male Female Eunuch 作为值和这些作为键的不同名称 Persons Hodor Male Tyrion Male Theon Male Arya Fema
  • 迭代 hastable 键的枚举会引发 NoSuchElementException 错误

    我正在尝试使用枚举来迭代哈希表中的键列表 但是我在列表中的最后一个键处不断收到 NoSuchElementException Hashtable
  • 获取 AWS S3 存储桶中对象的所有版本?

    我已在存储桶上启用对象版本控制 我想获取该存储桶内密钥的所有版本 但我找不到这样做的方法 如何使用 S3 API 来实现这一目标 所以 今天早上我遇到了这堵砖墙 事实证明 这件看似微不足道的事情做起来非常困难 您想要的 API 是获取桶对象
  • 我不小心删除了 Android 密钥库,如何恢复?

    好吧 我的动作很顺利 我现在无法更新市场中的任何应用程序 因为我不小心删除了我的 Android 密钥库 有谁知道我怎样才能把它拿回来 我尝试过运行恢复程序 但由于某种原因它没有出现 如果您丢失了私钥 它将永远消失 除非您有备份 如果您可以
  • WPF 中 DataTemplate 中的 x:Key、x:Name 和 x:UID 有什么区别?

    我正在尝试在 WPF 中创建动态选项卡 并且正在尝试编写一个仅适用于某些选项卡项目的内容模板 我希望能够为内容模板创建一个标识符 以便我可以在后面的代码中引用它 这样我就可以有选择地将它应用于单个 TabControl 中的某些选项卡 但是
  • WPF:如何使文本块触发按键事件?

    TextBlock 有 KeyDown 和 KeyUp 事件 但它从未被触发 有办法让它发生吗 我只需要检测是否按下了任何键 首先 您需要设置Focusable http msdn microsoft com en us library s
  • 有效计算 JavaScript 中对象的键/属性的数量

    这个问题几乎与如何有效地计算 JavaScript 中对象的键 属性的数量 https stackoverflow com questions 126100 how to efficiently count the number of ke
  • const 键和非 const 键有什么区别?

    下面两行有什么区别 map
  • 为什么我的 Google 地图 API 密钥无效?

    这是我的第一个问题 我在研究中没有找到答案 我在旧网站 不是我的网站 上的 google 地图 API 密钥出现问题 tao yin com 法国气功协会 有两个月的时间 我为这个网站做了一张地图 在两个地方 Here http www t
  • 在hbase中创建表

    我是 hbase 和 hadoop 的新手 无论如何 我已经成功建立了一个由3台机器组成的hadoop集群 现在我需要一些帮助来建立数据库 我有一个表 评论 包含字段 user id comments 对评论的评论 可以多个 和状态字段相同
  • openssl-使用密钥和 IV 解密 Base64 字符串

    我正在尝试解密已在 openssl 中使用 aes256 加密的 base64 字符串 我获得了会话密钥和 IV 它们是用我的密钥加密的 我将它们转换为十六进制 以便可以使用以下 openssl 命令 openssl enc d aes25
  • Python 元组作为键慢吗?

    我正在尝试实现字典中排序元组的快速查找 回答 元组 3 8 是否有关联值 如果有 它是什么 的问题 令元组中的整数从下方以 0 为界 从上方以 max int 为界 我继续使用 Python 的 dict 但发现速度相当慢 解决此问题的另一
  • 如何向 Rails 中的表追溯添加主键?

    我创建了一个没有主键的表 id gt false 但现在它又回来了 我的应用程序已经投入生产 我不能只是放弃它并重新创建另一个应用程序 有没有办法运行迁移以将另一个自动增量主键列添加到我的表中 在迁移中添加主键的命令是 add column
  • python随机字典键,并访问它[关闭]

    Closed 这个问题需要调试细节 help minimal reproducible example 目前不接受答案 import random Cards Spade 2 3 4 5 6 7 8 9 10 Jack Queen King
  • Google App Engine 密钥中允许使用哪些字符?

    在测试我的 Google App Engine 应用程序时 我搜索包含应用程序引擎密钥的链接 例如 story ag5yZXBsaWUtdGVzdGluZ3IMCxIFU3RvcnkY w0M 这些键中允许使用哪些字符 我一直在使用正则表达
  • 在 django 模板中显示字典键

    我想知道如何在 django 模板中显示字典键本身 字典示例 resources coin coin grain grain iron iron stone stone wood wood 模板 b Coin b upgrade coin
  • 如何在 Laravel 5 中通过键获取所有缓存项的列表?

    Laravel 中的 Cache 类具有 get itemKey 等方法来从缓存中检索项目 以及 Remember itemKey myData1 myData2 来将项目保存在缓存中 还有一个方法可以检查缓存中是否存在某个项目 Cache
  • 如何更新 Firebase 中的节点密钥?

    如何重命名14 04 2017 node 没有用于重命名节点的 API 您必须获取节点的值 使用新名称将其保存到数据库并删除旧节点
  • KeyboardEvent.keyCode 已弃用。这在实践中意味着什么?

    根据 MDN 我们绝对应该not正在使用 keyCode财产 它已被弃用 https developer mozilla org en US docs Web API KeyboardEvent keyCode https develope

随机推荐