golang 连接、操作完mysql, 对mysql的连接会自动关闭,还是必须要手动关闭?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了golang 连接、操作完mysql, 对mysql的连接会自动关闭,还是必须要手动关闭?相关的知识,希望对你有一定的参考价值。

求教:这段代码对数据库的连接没有主动关闭(调用 db.Close()), 是不是Go的垃圾收集自动关闭释放资源呢? 还是必须手动调用db.Close()释放资源?[mw_shl_code=applescript,true]import ( _ "code.google.com/p/go-mysql-driver/mysql" "database/sql" "fmt" //"time")func main() db, err := sql.Open("mysql", "astaxie:astaxie@/test?charset=utf8") checkErr(err) //插入数据 stmt, err := db.Prepare("INSERT userinfo SET username=?,departname=?,created=?") checkErr(err) res, err := stmt.Exec("astaxie", "研发部门", "2012-12-09") checkErr(err) id, err := res.LastInsertId() checkErr(err) fmt.Println(id) //删除数据 stmt, err = db.Prepare("delete from userinfo where uid=?") checkErr(err) res, err = stmt.Exec(id) checkErr(err) affect, err = res.RowsAffected() checkErr(err) fmt.Println(affect)func checkErr(err error) if err != nil panic(err) [/mw_shl_code]

Go垃圾回收是内存垃圾回收,分配给对象的内存回收。对于资源,必须手动释放,还给操作系统 参考技术A 不手动关的话,可能在你程序结束的时候,或者这个连接对象出了作用域的时候,golang会帮你自动关闭。。。不过还是支持手动关闭。。。这是好习惯。。。 参考技术B 当然可以不关闭,mysql过会都会自动关了的。但要养成手动关的习惯。

以上是关于golang 连接、操作完mysql, 对mysql的连接会自动关闭,还是必须要手动关闭?的主要内容,如果未能解决你的问题,请参考以下文章

golang 连接池mysql

mysq解决sleep进程过多的办法

golang中连接mysql数据库,操作数据库

golang中连接mysql数据库,操作数据库

GoLang如何操作mysql

mysq安装以及修改密码