猿问

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

我有一个脚本需要向数据库中插入大量数据(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)

谢谢


当年话下
浏览 271回答 1
1回答

慕码人8056858

对于遇到相同问题的人,请确保只调用一次 Prepare 语句,并将其排除在任何循环之外。我只是注意到它在我的“for”循环中,因此它每次都创建一个新的准备语句。还要感谢之前提到的 Apin
随时随地看视频慕课网APP

相关分类

Go
我要回答