为了账号安全,请及时绑定邮箱和手机立即绑定

Go 语言 - 在没有准备好的语句的情况下将数据插入 Mysql 数据库

Go 语言 - 在没有准备好的语句的情况下将数据插入 Mysql 数据库

Go
当年话下 2022-01-10 14:39:40
我有一个脚本需要向数据库中插入大量数据(270k 行),并且我正在使用准备好的语句(带有 for 循环)。当我执行 ( res, err := stmt.Exec) 时,我可以检索插入到数据库 ( id, err  = res.LastInsertId()) 中的最后一个 ID 。但是由于我向数据库发出了很多请求,在我得到 16k 行之后max_prepared_statements(16,382) error(然后我尝试将最大值设置为 100 万而不是 16,382,但问题仍然存在)。我的问题是,是否有另一种方法可以在不使用准备好的语句的情况下插入数据库并检索最后插入的 ID?我现在的插入代码是:stmt, err := db.Prepare(`INSERT info SET title=?,minimage=?,downloadfile=?,rating=?,peoplewatched=?,likes=?`)checkErr(err)res, err := stmt.Exec(title,minimage,downloadfile,rating,peoplewatched,likes)checkErr(err)id, err  = res.LastInsertId()checkErr(err)fmt.Println(id)谢谢
查看完整描述

1 回答

?
慕码人8056858

TA贡献1803条经验 获得超6个赞

对于遇到相同问题的人,请确保只调用一次 Prepare 语句,并将其排除在任何循环之外。我只是注意到它在我的“for”循环中,因此它每次都创建一个新的准备语句。

还要感谢之前提到的 Apin


查看完整回答
反对 回复 2022-01-10
  • 1 回答
  • 0 关注
  • 268 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信