Documentation Home
MySQL 连接器/ODBC 发行说明  / MySQL 连接器/ODBC 版本 8.0 中的更改  /  MySQL Connector/Node.js 8.0.16 的变化(2019-04-25,正式发布)

MySQL Connector/Node.js 8.0.16 的变化(2019-04-25,正式发布)

X DevAPI 注释

  • Connector/Node.js 现在支持连接属性作为应用程序可以传递给服务器的键值对。Connector/Node.js 定义了一组默认属性,可以禁用或启用。除了这些默认属性外,应用程序还可以提供自己的一组自定义属性,如下所列:

    • 应用程序可以将连接属性指定为 connection-attributes连接字符串中的参数,或者通过使用 connectionAttributes纯 JavaScript 对象或 JSON 表示法的属性来指定连接配置选项。

      connection-attributes参数值必须为空(与指定相同 )true、一个Boolean值(truefalse以启用或禁用默认属性集)或零个或多个key=value以逗号分隔的对说明符列表(除了默认属性集外还要发送). 在列表中,缺少键值的计算结果为NULL.

      connectionAttributes属性允许使用纯 JavaScript 对象或 JSON 符号将用户定义的属性传递给应用程序以指定连接配置选项。在这种情况下,请在 下的嵌套对象中定义每个属性 connectionAttributes,其中属性名称与属性名称匹配,属性值与属性值匹配。与 connection-attributes, 不同,在使用纯 JavaScript 对象或 JSON 表示法时,如果 connectionAttributes对象包含重复键,则不会抛出任何错误,并且为重复对象键指定的最后一个值将被选为有效属性值。

      例子:

      不发送默认的客户端定义的属性:

      mysqlx.getSession('{ "user": "root", "connectionAttributes": false }')
      
      mysqlx.getSession('mysqlx://root@localhost?connection-attributes=false')
      
      mysqlx.getSession({ user: 'root', connectionAttributes: { foo: 'bar', baz: 'qux', quux: '' } })
      mysqlx.getSession('mysqlx://root@localhost?connection-attributes=[foo=bar,baz=qux,quux]')

    应用程序定义的属性名称不能以 _;开头 这些名称是为内部属性保留的。

    如果未以有效方式指定连接属性,则会发生错误并且连接尝试失败。

    有关连接属性的一般信息,请参阅 性能模式连接属性表

添加或更改的功能

  • client.getSession()通过仅在需要时重新验证 来优化现有连接的重用 。

  • 对于 X DevAPI,通过在第二次和任何后续执行中使用服务器端准备好的语句,可以提高重复执行语句的性能。这发生在内部;应用程序无需采取任何操作,API 行为应与以前相同。对于更改的语句,会根据需要进行重新准备。提供不同的数据值,或不同的offset()or limit()值,不算作此目的的更改。相反,新值被传递给先前准备好的语句的新调用。

修正错误

  • 未重用与 MySQL 服务器的空闲池连接;必须重新创建新连接。(漏洞#29436892)

  • 执行client.close()没有关闭连接池中的所有关联连接。(缺陷号 29428477)

  • connectTimeout而不是 maxIdleTime确定连接池中的空闲连接是否被重用而不是创建新连接。(漏洞#29427271)

  • 从连接池中释放的连接没有被重置和重用;而是建立了新的连接。(漏洞 #29392088)

  • 文档中的日期值在插入集合时被转换为空对象。(缺陷 #29179767,缺陷 #93839)

  • 0(无限)以外的queueTimeout值会阻止从连接池中获取旧的已释放连接。(漏洞 #29179372,漏洞 #93841)