版本 8.0.20 是 8.0 系列 MySQL Connector/J 的最新通用版本。它适用于 MySQL 服务器版本 8.0、5.7 和 5.6。它支持 Java 数据库连接 (JDBC) 4.2 API,并实现了 X DevAPI。
X DevAPI: Connector/J 现在支持 X 协议连接的数据压缩。有关详细信息,请参阅 使用 X DevAPI 的连接压缩。
一个新方法,
getElapsedTime()
已添加到Statement
Connector/J 中的接口实现中,以公开查询的经过时间。感谢 Matti Sillanpää 贡献代码。(漏洞 #30570249,漏洞 #97714)
当在 a
Calendar
的setDate
方法 中使用自定义时PreparedStatement
,它被不使用相同日历的相同方法的后续调用使用,导致设置了错误的日期。这是因为SimpleDateFormat
使用自定义日历在内部创建的对象被缓存和重用。通过此修复,不再缓存该对象。(缺陷号 30877755)clientInfoProvider
在不使用完全限定类名的情况下 设置连接属性 会ClientInfoProviderSP
导致NullPointerException
. 这是由于某些错误的异常处理所致,此修复程序已更正该错误。(缺陷号 30832513)当客户端尝试连接到使用 Windows 身份验证插件和 Kerberos 协议的服务器时,身份验证失败。这是因为
NativeAuthenticationProvider
Connector/J 类的实现没有与定制的 Kerberos 身份验证插件正确交互,这个补丁修复了这个问题。(缺陷号 30805426)ResultSetUtil
Connector/J 8.0.20 中不再使用类中的 方法;因此该类已被删除。(缺陷号 30636056)NullPointerException
当连接完成cacheResultSetMetadata=true
并执行包含任何SET
语句的查询时返回 A。此修复程序通过添加缺少的变量赋值和空值检查来更正此问题。(漏洞 #30584907,漏洞 #97757)DataConversionException
当应用程序试图存储以“d”开头的字符串时抛出 A。[d 是任何数字] 到VARCHAR
列中。这是由于 中的解析错误,AbstractNumericValueFactory
此补丁已修复该错误。感谢 Nick Pollett 贡献代码。(缺陷 #30570721,缺陷 #97724)创建 时
Statement
,不遵守参数规范resultSetType
,因此ResultSet
类型始终设置为ResultSet.TYPE_FORWARD_ONLY
。通过此修复,resultSetType
现在可以使用该参数。此外,还添加了类型验证,以便在类型为时调用方法beforeFirst
,afterLast
,first
,last
,absolute
,relative
或previous
导致异常。(缺陷号 30474158)ResultSet
ResultSet.TYPE_FORWARD_ONLY
-
当
Calendar
不使用 a 时,java.sql.Date
值不能始终一致地存储到 MySQL 服务器中,然后从中检索。这是因为 Connector/J 在将Date
值作为 MySQL 存储在服务器上时总是将值转换为服务器的时区DATE
;但由于 MySQLDATE
没有任何时间值,原始日期的小时、分钟和秒部分实际上丢失了。如果转换后的值比原值早一天或晚一天,通过Connector/J取值并转换回本地时区时,没有将日期调回原值的时间值,导致一天的错误。有了这个修复,任何Date
value 使用JVM 的时区转换为MySQLDATE
值,因此该值在存储和读回时始终保持一致。此外,
cacheDefaultTimezone
以前从 Connector/J 8.0 中删除的连接属性现在已恢复,因此当它设置为 时false
,Connector/J 会在运行时意识到 JVM 的时区更改,并使用更新后的时区转换日期。(漏洞 #28125069,漏洞 #91112)