对于Connector/ODBC使用MySQL服务器捆绑的OpenSSL库的平台(MacOS, Windows和GenLinux), MySQL服务器的链接OpenSSL库更新到版本1.1.1k。在新的OpenSSL版本中修复的问题描述在https://www.openssl.org/news/cl111.txt而且https://www.openssl.org/news/vulnerabilities.html.(错误# 32719727)
参考:参见Bug #32680637。
以前,如果到服务器的连接在wait_timeout系统变量指定的时间内没有使用,并且服务器关闭了连接,客户端不会收到原因通知。通常,客户端会在查询过程中看到与MySQL服务器的连接丢失(CR_SERVER_LOST)或MySQL服务器已经消失(CR_SERVER_GONE_ERROR)。
在这种情况下,服务器现在会在关闭连接之前将原因写入连接,客户端会收到一条信息更丰富的错误消息:客户端由于不活动而被服务器断开连接。请参见wait_timeout和interactive_timeout配置此行为。(ER_CLIENT_INTERACTION_TIMEOUT)。
前面的行为仍然适用于到旧服务器的客户端连接以及旧客户端到服务器的连接。
如果经典的MySQL协议连接遇到服务器超时,连接器/ODBC现在会从服务器报告更精确的断开信息。
设置PAD_SPACE=1不会导致CHAR列被空格填充到它们的全部长度,这阻止了MSSQL链接服务器在MySQL数据库中使用ENUM和CHAR列。(错误# 32537000)
ODBC的SQLProcedureColumns函数返回不完整的结果,使用后的取回只返回前40个参数。
变通办法是增加
group_concat_max_len
大小,例如在[mysqld]下的'group-concat-max-len = 1000000'。(Bug #32504915, Bug #102589)MySQL 8.0.24增加了新的错误代码ER_CLIENT_INTERACTION_TIMEOUT,它导致ODBC驱动程序在服务器上通过wait_/_interactive timeout终止连接后报告错误的SQLSTATE HY000而不是08S01。ODBC驱动程序现在链接到libmysqlclient 8.0.24来处理这种情况。(错误# 32394545)
将不带参数的查询传递给SQLPrepare()不会准备任何东西。在某些情况下,它将立即执行这样的查询,这与调用SQLExecDirect()函数相同。在其他场景中,它在没有使用SQLExecute()函数进行准备的情况下执行。这可能导致异常长的查询时间。现在,即使查询没有参数,驱动程序也会通过SQLPrepare()函数强制语句的准备。(错误# 32079486)
连接器/ODBC报告ENUM列为SQL_CHAR,因为ODBC标准不支持ENUM,而MS SQL Server期望CHAR数据始终与列定义中指定的固定长度相同。这修复了与驱动程序UNICODE版本中出现的新行和制表符相关的错误。解决方法是通过不设置NO_SSPS=1来启用SSPS(默认)。(Bug #28783266, Bug #92748)
参考:参见Bug #32537000。