node.js mysql 建立连接、查询、释放连接问题
 发布于 9 年前  作者 jkiss  7430 次预览  最后一次回复是 9 年前  来自 问答 

node建立mysql的连接池后,我是用的 pool.query ,直接进行查询的,那么查询后会自动释放连接吗?如果用 getConnection 方法,得主动调用 release() 方法来释放连接,但直接用连接池query呢?

9 回复
fangker

连接池自动释放的,他会默认保持一些链接。

im-here

我都是用的getConnection,但是文档里好像说了用pool.query是不用主动releasepool会自动release,两者用起来应该是没有什么差别的,但是如果你要是用事务之类的,要保证conn的安全的情况下,还是主动getConnection比较好

zouzhenxing

连接池也要主动release连接,否则会报错。你可以试试。

fangker

@zouzhenxing 要主动释放么?我从没主动释放过

jkiss

@imhered 业务完成后或者报错后将连接释放吗?文档里我没找到 pool 会不会主动释放的文字。。。

jkiss

@zouzhenxing 这个要咋试?我理解是pool会根据每个连接状态释放连接

shadow88sky

pool.query不需要释放连接

CoderIvan

这里说了,只有getConnection的时候才需要释放

https://github.com/mysqljs/mysql#pooling-connections

untitled1.png

jkiss

实践证明 pool.query 如果不 release 的话的确会报错:Error: queryHTMLContentByInstanceId fail: Error: ER_CON_COUNT_ERROR: Too many connections