版本 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 ,当设置为 时
true
,SocksProxySocketFactory
执行它自己的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 时,复制连接的语句执行失败。(缺陷 #
true
25701740 )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)BLOB
executeBatch()
NullPointerException
ResultSetMetaData
并且DatabaseMetaData
即使 在.Types.DATE
_ 通过此修复,可以在这种情况下正确返回。(漏洞 #82084,漏洞 #23743938)YEAR
yearIsDateType=false
Types.SMALLINT
PreparedStatement
如果涉及的任何表列包含“select”作为列名称中的子字符串,则无法为批量插入重写 A。(错误#81468,错误#23312764)当使用服务器端准备好的语句并且连接属性
profileSQL
设置为 true 时,LONGTEXT
使用 a 设置类型的参数会StringReader()
导致java.io.NotSerializableException
. (缺陷 #62006,缺陷 #16714956)存储过程
INOUT
的数据类型的类型参数 发生数据截断。BIT(1)
(缺陷 #38954,缺陷 #11749415)