-
为了补充现有的异步
mysqlx.getSession(conn_str)
方法,添加了一个新的同步mysqlx.getClient(conn_str, options)
方法;新方法创建一个连接池处理程序,它提供一个异步getSession()
方法来创建和检索池中的连接。此处列出了集合池选项:enabled
:启用或禁用连接池;一个默认为 true 的布尔值。maxSize
:池中可用的最大连接数;一个默认为 25 的正整数。maxIdleTime
:连接在关闭前可以在队列中空闲的最大毫秒数;一个非负整数,默认为 0(无限)。-
queueTimeout
:请求等待连接可用的最大毫秒数;一个非负整数,默认为 0(无限)。这与不
connectTimeout
使用连接池时使用的不同。当使用池时,池中可能已经有连接;queueTimeout
控制等待来自池的连接的时间。
例子:
var mysqlx = require('@mysql/xdevapi') var client = mysqlx.getClient( { user: 'root', host: 'localhost', port: 33060 }, { pooling: { enabled: true, maxIdleTime: 5000, maxSize: 25, queueTimeout: 20000 } } ); client.getSession() .then(session => { console.log(session.inspect()) return session.close() // the connection becomes idle in the client pool }) .then(() => { return client.getSession() }) .then(session => { console.log(session.inspect()) return client.close() // closes all connections and destroys the pool })
关闭附加到池的会话使池中的连接可用于后续
getSession()
调用,同时关闭(即销毁)池有效地关闭了所有服务器连接。 -
mysqlx.getClient()
向(池化)和mysqlx.getSession()
(无池化)接口 添加了连接超时查询参数 。此参数确定客户端等待 MySQL 服务器从给定网络地址变得可用的时间长度(以毫秒为单位)。默认值为 10000(10 秒)。将其设置为 0 会禁用超时,以便客户端等待底层套接字超时。套接字超时是平台相关的与其他连接器/Node.js 参数一样,kebab 大小写用于 URI 定义 (
connection-timeout
),驼峰大小写用于 JavaScript 配置对象 (connectionTimeout
)。示例 1:
const mysqlx = require('@mysql/xdevapi'); var client = mysqlx.getClient('root@localhost?connect-timeout=5000') client.getSession() .catch(err => { console.log(err.message) // "Connection attempt to the server was aborted. Timeout of 5000 ms was exceeded." })
示例 2:
const mysqlx = require('@mysql/xdevapi'); var client = mysqlx.getClient('mysqlx://root:passwd@[localhost:33060, 127.0.0.1:33060]?connect-timeout=5000') client.getSession() .catch(err => { // connection could not be established after 10 seconds (5 seconds for each server) console.log(err.message); // All server connection attempts were aborted. Timeout of 5000 ms was exceeded for each selected server. });
使用多个主机时,该
connect-timeout
值分别应用于每个主机。
通过正确记录然后忽略非致命错误,并在发生致命错误时使连接无法用于后续操作,改进了 X 协议全局通知的处理。(漏洞#28653781)
调用
getCollationName()
非文本类型的列,例如throw TypeError: Cannot read property 'collation' ofINT
undefined 。(漏洞 #28608923)该
fields()
方法不适用于该expr()
方法生成的有效表达式。(缺陷号 28409639)返回的
Session.inspect()
对象现在user
除了 property 之外还 包括dbUser
property;每个属性包含相同的值。(漏洞 #28362115)