我正在使用 go-sql-driver/mysql 从 OMDB 数据转储中插入大量电影。我正在解析数据并使用以下代码将其插入:
_, err = database.Query("INSERT INTO `movies` (`name`, `year`, `release_date`, `full_plot`, `genre`, `imdb_id`) VALUES (?, ?, ?, ?, ?, ?)", movie.Name, movie.Year, movie.ReleaseDate, movie.FullPlot, movie.Genre, movie.IMDBID)
if err != nil {
return false, nil
}
return true, nil
有效,但仅适用于 150 行。我做错了什么吗?
最佳答案
您的代码似乎丢弃了返回的错误值,您不应该这样做;优雅地处理它。查看错误是什么,如果您打开了太多与数据库的连接,则应使用数据库连接池并设置 (*DB) SetMaxOpenConns
值。
(*DB)Query
通常用于返回行的 SELECT
语句,使用 (*DB)Exec
或 ( *Stmt)Exec
用于您的 INSERT
。
我建议使用数据库连接池和 (*sql.DB)Prepare
准备语句并使用准备好的语句运行插入(甚至同时)。
关于sql - 不能插入超过 150 行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37503585/