Documentation Home
MySQL 连接器/J 8.0 发行说明  /  MySQL Connector/J 8.0.29 的变化(2022-04-26,全面上市)

MySQL Connector/J 8.0.29 的变化(2022-04-26,全面上市)

版本 8.0.29 是 8.0 系列 MySQL Connector/J 的最新通用版本。它适用于 MySQL 服务器版本 8.0 和 5.7。它支持 Java 数据库连接 (JDBC) 4.2 API,并实现了 X DevAPI。

添加或更改的功能

  • 历史上,MySQL 曾utf8作为utf8mb3. 自 8.0.29 版以来, utf8mb3已成为 MySQL 服务器自身公认的(尽管已弃用)字符集。因此,Connector/J 已添加utf8mb3其字符集映射,鼓励用户更新至 Connector/J 8.0.29,以避免在使用 MySQL Server 8.0.29 或更高版本时出现潜在问题。(缺陷号 33850155)

    参考资料:另请参阅:Bug #33635120。

  • 添加了一个新的连接属性 socksProxyRemoteDns ,当设置为 时trueSocksProxySocketFactory执行它自己的connect()实现,将未解析InetSocketAddress的 MySQL 服务器主机传递给创建的代理套接字,而不是在本地解析地址。(错误#77924,错误#25710160)

  • 准备好的语句的代码已经重构,使代码更简单,并且绑定逻辑在 ServerPreparedStatement和 之间更加一致ClientPreparedStatement

  • Connector/J 现在支持快速身份在线 (FIDO) 身份验证。有关详细信息,请参阅 使用快速身份在线 (FIDO) 身份验证进行连接。

修正错误

  • X DevAPI: 如果连接属性 xdevapi.ssl-mode 设置为DISABLED(或 xdevapi.ssl-mode 未设置,但值是从 sslMode设置中获取的),指定一些安全属性会导致 Connector/J 抛出一个错误。通过此修复,即使关闭加密并设置不相关的安全属性,Connector/J 也不会引发错误。

  • DatabaseMetaData.getDefaultTransactionIsolation() 返回了错误的值。它现在返回正确的值 Connection.TRANSACTION_REPEATABLE_READ。(缺陷号 33723611)

  • 当useCursorFetch大于 0 时,复制连接的语句执行失败。(缺陷 # true25701740 ) defaultFetchSize

  • /*当准备好的语句包含由和 标记的注释时,有时会被错误地解析*/。(缺陷号 21978230)

  • 连接在池中使用时未保持正确的自动提交状态 useLocalSessionState=true。(缺陷 #106435,缺陷 #33850099)

    参考:这个问题是 Bug #33054827 的回归。

  • 缓冲区长度小于预期负载长度的错误消息中的拼写错误已得到纠正。感谢 Jianjian Song 提供修复。(错误#106397,错误#33893591)

  • 使用客户端准备好的语句时,如果 VALUES 子句出现在 ON DUPLICATE KEY UPDATE子句之后或出现在语句末尾, StringIndexOutOfBoundsException则抛出 a 。此补丁重构了查询解析器以解决问题背后的问题,同时也提高了解析器的性能。(错误#106240,错误#33781440)

  • 课堂上删除了一个不必要的 findColumn()拳击 ResultSetImpl。感谢 Pei Pei Ning 贡献了这个改进。(错误#106171,错误#33757217)

  • 解码小数时,用于创建 BigDecimal对象的构造函数已从 更改为 BigDecimal(String)BigDecimal(char[])节省内存。感谢 Chen Yi 为本次改进做出的贡献。(错误#106065,错误#33726184)

  • BigDecimal使用可重写的服务器端准备语句和基于游标的提取将值插入数据库时​​,值会遭受精度损失。(错误#105915,错误#33678490)

  • 当 Connector/J 记录器级别为 时 ,当记录器尝试读取该值时TRACE,a 的空绑定值 会PreparedStatement导致 a 。NullPointerException此补丁添加了空检查以避免在这种情况下抛出异常。(错误#104349,错误#33563548)

  • 当连接属性 rewriteBatchedStatements 设置为 时,使用准备好的语句 true插入 一个 . (漏洞 #85317,漏洞 #25672958)BLOBexecuteBatch()NullPointerException

  • ResultSetMetaData并且 DatabaseMetaData即使 在. Types.DATE_ 通过此修复,可以在这种情况下正确返回。(漏洞 #82084,漏洞 #23743938)YEARyearIsDateType=falseTypes.SMALLINT

  • PreparedStatement如果涉及的任何表列包含“select”作为列名称中的子字符串,则无法为批量插入重写 A。(错误#81468,错误#23312764)

  • 当使用服务器端准备好的语句并且连接属性 profileSQL 设置为 true 时, LONGTEXT使用 a 设置类型的参数会StringReader()导致 java.io.NotSerializableException. (缺陷 #62006,缺陷 #16714956)

  • 存储过程INOUT的数据类型的类型参数 发生数据截断。BIT(1)(缺陷 #38954,缺陷 #11749415)