Documentation Home
MySQL 连接器/ODBC 发行说明  / MySQL 连接器/ODBC 版本 8.0 中的更改  /  MySQL Connector/C++ 8.0.24 的变化(2021-04-20,全面上市)

MySQL Connector/C++ 8.0.24 的变化(2021-04-20,全面上市)

连接管理说明

  • 以前,对于使用遗留 JDBC API(即不是 X DevAPI 或 X DevAPI for C)的客户端应用程序,如果在 wait_timeout系统变量指定的时间内未使用到服务器的连接并且服务器关闭了连接,则客户没有收到原因通知。通常,客户端会 在查询期间看到与 MySQL 服务器的连接丢失 ( CR_SERVER_LOST) 或 MySQL 服务器已消失 ( CR_SERVER_GONE_ERROR)。

    在这种情况下,服务器现在会在关闭连接之前将原因写入连接,并且客户端会收到一条信息更丰富的错误消息,客户端因不活动而被服务器断开连接。请参阅 wait_timeout 和 interactive_timeout 以配置此行为。 ( ER_CLIENT_INTERACTION_TIMEOUT).

    以前的行为仍然适用于客户端与旧服务器的连接以及旧客户端与服务器的连接。

  • 对于使用 X 插件建立的连接,如果连接到服务器的客户端保持空闲(不发送到服务器)的时间超过相关的 X 插件超时设置(读取、写入或等待超时),X 插件将关闭连接。如果发生任何这些超时,插件将向客户端应用程序返回一个错误代码为ER_IO_READ_ERROR的警告通知。

    对于此类连接,如果连接因服务器关闭或连接被另一个客户端会话终止而主动关闭,X Plugin 现在还会发送警告通知。在服务器关闭的情况下,警告通知将发送到所有具有打开连接的经过身份验证的 X 协议客户端,并带有ER_SERVER_SHUTDOWN错误代码。在连接终止的情况下,将向相关客户端发送带有 ER_SESSION_WAS_KILLED错误代码的警告通知,除非连接在 SQL 执行期间被终止,在这种情况下会返回带有 ER_QUERY_INTERRUPTED错误代码的致命错误。

    如果使用连接池并且由于服务器关闭而在会话中收到连接关闭通知,则连接到同一端点的所有其他空闲会话将从池中删除。

    客户端应用程序可以使用警告通知向用户显示,或分析断开连接的原因并决定是尝试重新连接到同一服务器还是不同的服务器。

包装说明

  • 由于使用 authentication_ldap_sasl身份验证插件的帐户连接失败,连接器/C++ 包现在包含 sasl2 模块。(缺陷号 32175836)

安全说明

修正错误

  • 连接到服务器后,Connector/C++ 执行许多 SHOW [SESSION] VARIABLES语句来检索系统变量值。此类语句涉及锁定服务器,因此现在避免使用它们以支持 语句。 SELECT @@var_name

    此外,Connector/C++ 试图获取 max_statement_time系统变量的值,该变量已重命名为 max_execution_time. Connector/C++ 现在使用正确的变量名称,结果是 现在对于对象getQueryTimeout()和 对象都setQueryTimeout()可以正常工作 。(缺陷 #28928712,缺陷 #93201)StatementPrepared Statement

  • DatabaseMetaData.getProcedures()metadataUseInfoSchema当连接选项为 false时失败。(漏洞#24371558)