版本 8.0.28 是 8.0 系列 MySQL Connector/J 的最新通用版本。它适用于 MySQL 服务器版本 8.0 和 5.7。它支持 Java 数据库连接 (JDBC) 4.2 API,并实现了 X DevAPI。
-
TLSv1 和 TLSv1.1 连接协议已在 Connector/J 8.0.26 中弃用,现在已在此版本中删除。删除的值被视为对连接选项和会话设置无效。可以使用更安全的 TLSv1.2 和 TLSv1.3 协议建立连接。使用 TLSv1.3 需要使用 OpenSSL 1.1.1 或更高版本编译服务器,并使用支持 TLSv1.3 的 JVM(例如,Oracle Java 8u261 及更高版本)运行 Connector/J。
此外,以下连接属性已重命名:
enabledTLSProtocols
重命名为 tlsVersions;原始名称保留为别名。enabledSSLCipherSuites
重命名为 tlsCiphersuites;原始名称保留为别名。
X DevAPI: 文档
_id
检查已添加到Collection.addOrReplaceOne(id, doc)
和Collection.replaceOne(id, doc)
方法中:如果inid
不匹配,则操作失败。(缺陷号 32770013)_id
doc
Connector/J 现在支持连接到 MySQL 服务器的多因素身份验证。为此添加了三个新的连接属性 password1、 password2和 password3 。有关详细信息,请参阅 使用多因素身份验证进行连接。
Connector/J 发行版中的
README
文件在附加资源部分包含损坏的链接。(缺陷号 33507321)使用批处理 将
java.time.LocalDate
对象作为值 存储到服务器上失败,投诉无法转换为 。通过此修复,对象被正确编码为一个值。(错误#33468860,错误#105211)DATE
PreparedStatement
java.time.LocalDate
java.sql.Date
DATE
ResultSet
absolute()
、relative()
、first()
、等导航方法 在应用于不可导航的 时last()
返回 a 。这是因为这些方法在尝试导航之前没有检查是否 真的有任何行。此补丁使所有导航方法执行检查并 在没有行时抛出正确的错误。(缺陷号 33461744)NullPointerException
ResultSet
ResultSet
SQLException
ResultSet
PreparedStatement
以 的形式 运行 aINSERT INTO ... VALUE ... ON DUPLICATE KEY UPDATE ... VALUES(...)
导致StringIndexOutOfBoundsException
. 这是因为 Connector/J 没有将语句中的VALUE
for 识别为别名,并将 函数 误认为是语句的子句。通过此修复,可以正确解析此类语句。(错误#33425867,错误#84365)VALUES
INSERT
VALUES()
VALUES
当连接会话的字符集为 SJIS 时,
BLOB
客户端准备好的语句无法正确处理值。(缺陷号 33350185)一些 Java 框架会阻止
autocommit
MySQL 服务器上值的更改。当应用程序尝试更改autocommit
时,客户端的连接值已更改Session
,但在服务器上无法更改,因此设置变得不同步。通过此修复,Connector/J 在这种情况下会重置autocommit
为其原始值Session
。感谢 Tingyu Wei 为修复做出的贡献。(错误#33054827,错误#104067)getWarnings()
总是向服务器发送SHOW WARNINGS
查询。通过此修复,仅当确实存在要显示的警告时才发送查询,以节省资源。(错误#32089018,错误#101389)调用 后
Statement.setQueryTimeout()
,当达到查询超时时,会建立与服务器的连接以终止查询,但此后连接仍保持打开状态。通过此修复,新连接将在查询终止后关闭。(漏洞 #31189960,漏洞 #99260)为执行而创建的新会话在 取消
Statement.cancel()
后仍保持打开状态 。 通过此修复,会话在取消Statement
后关闭。Statement
(漏洞 #30355150,漏洞 #96900)在对象上使用该
setString()
方法 会SQLXML
导致NullPointerException
. (漏洞 #25656020,漏洞 #85223)