修复了自版本5.1.13以来的错误。
连接器/ j对此的依赖
org.apache.commons.logging.
包已被删除。(bug#11756133,bug#48013)Connector/J的负载平衡功能只允许以下事件触发故障转移:
事务提交/回滚
CommunicationExceptions
使用LoadBalatesQlStateFailover,loadBalancesQLExcepionsubclassFailover或LoadBalanceExceptionChecker属性匹配。
这意味着,除了Exceptions之外,启用自动提交的连接是不平衡的,这在复制部署中跨多个slave分发只读工作的情况下是有问题的。
现在Connector/J中添加了启用自动提交的负载平衡功能。这引入了两个新属性:
LoadBalanceAutoCommOcnitStatementThreshold - 定义将触发驱动程序(可能)交换物理服务器连接的匹配语句的数量。默认值(0)保留先前建立的行为,即启用自动提交的连接永远不会平衡。
loadbalanceautocommitstatementRegex - 正则表达式必须匹配的陈述。默认值(空白)匹配所有语句。
负载平衡将在语句执行之后,在控制返回给应用程序之前完成。如果再平衡失败,驱动程序将默默地吞下产生的Exception(语句本身成功完成)。(错误# 55723)
连接故障转移左从属/次要的只读模式。两个读写主机之间的故障转移尝试未正确设置
this..currentconn.setReadonly(false)
.(错误# 58706)这
CallableStatementRegression
Test Suite失败,其中null指针异常是因为出
参数在I__S。参数
表没有名字,即COLUMN_NAME
有价值零
.(bug#58232)连接器/ j将3字节和4字节的UTF8编码映射到同一Java UTF8编码。
使用Connector/J集的3字节UTF8
shatsplyencoding = UTF8.
和集合useUnicode = true
在连接字符串中。使用带连接器/ j的4字节UTF8配置MySQL Server
character_set_server = utf8mb4
.连接器/J将使用该设置,只要characterEncoding
尚未设置在连接字符串中。这相当于字符集的自动检测。(bug#58232)databasemetadata.supportsmultipleresultsets()
是硬编码回去吗错误的
,尽管Connector/J支持多个结果集。(错误# 57380)使用
umerdututf8behavior.
参数设置连接字符集失败拉丁语
是必需的。在5.1.3之前的版本中,使用握手使用
拉丁语
,虽然在握手完成后有明确设置字符集的逻辑,但是当umerdututf8behavior.
是真的。直到5.1.3,当握手被修改使用时,这不是问题use utf8
,但逻辑继续允许在该握手过程中配置的字符集要保留以供以后使用。因此,umerdututf8behavior.
有效失败。(bug#57262)调用一个包含输出参数全名的存储过程(该存储过程位于另一个数据库中),会生成以下异常:
参数索引1不在(1,0)范围内
(bug#57022)
当JDBC客户端从远程服务器断开连接时
Connection.close ()
,TCP连接仍然存在TIME_WAIT
状态在服务器端,而不是客户端。(bug#56979)留下信任/ clientCertStoreType属性未设置导致连接时抛出异常
useSSL = true
,因为没有使用违约。(错误# 56955)当加载平衡连接交换服务器时,将从先前的活动连接复制某些会话状态到新选择的连接。状态同步包括:
自动提交状态
交易隔离状态
当前架构/目录
但是,如果在只读连接尝试写入,则不会同步只读状态,这导致了问题。(bug#56706)
当使用为故障转移配置的Connector/J时(jdbc:mysql://host1,host2,…url),当提交或回滚主服务器上的事务时,非主服务器重新平衡。(错误# 56429)
生成未处理的空指针异常(NPE)
databasemetadata.java.
当调用没有访问权限且大小写不正确的函数名时mysql.proc
是可用的。除了捕捉潜在的NPE之外,防止呼叫JDBC功能
db_name.proc_name.
还添加了符号。(bug#56305)添加了诊断信息
sqlexception.
由使用关闭的负载均衡连接引起的消息,以帮助澄清连接关闭的根本原因。(错误# 56200)尝试使用JDBC4功能
联系
对象导致生成错误:java.lang.AbstractMethodError: com.mysql.jdbc.LoadBalancedMySQLConnection.createBlob()Ljava/sql/Blob;在sun.reflect.NativeMethodAccessorImpl。invoke0(本机方法)sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java: 39) sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java: 25) java.lang.reflect.Method.invoke (Method.java: 597) com.mysql.jdbc.LoadBalancingConnectionProxy.invoke Proxy0美元(LoadBalancingConnectionProxy.java: 476)。createBlob(未知来源)
(错误# 56099)
连接器/J可以使用“参数索引超出范围“执行存储过程时出错。(bug#55328,bug#11762701)