-
为了补充现有的异步
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' ofINTundefined 。(漏洞 #28608923)该
fields()方法不适用于该expr()方法生成的有效表达式。(缺陷号 28409639)返回的
Session.inspect()对象现在user除了 property 之外还 包括dbUserproperty;每个属性包含相同的值。(漏洞 #28362115)