MySQL 连接器和其他 MySQL 客户端工具和应用程序现在将其版本号的第一位数字与其支持的(最高)MySQL 服务器版本同步。例如,MySQL Connector/C++ 8.0.12 旨在支持 MySQL 服务器版本 8(或更低版本)的所有功能。此更改使得决定将哪个客户端版本用于哪个服务器版本变得简单直观。
Connector/C++ 8.0.5 是第一个使用新编号的版本。它是 Connector/C++ 2.0.4 的后续版本。
-
Connector/C++ 现在支持配置为
utf8mb4
用作默认字符集的 MySQL 服务器。目前,Connector/C++ 仅适用于 UTF-8 和 ASCII 默认字符集(
utf8
、utf8mb4
和ascii
)。如果用户创建一个表,其中包含使用非 UTF-8 字符集的文本列,并且此列包含包含非 ASCII 字符的字符串,则尝试访问该字符串(例如,在查询结果中)时会发生错误. 另一方面,如果字符串仅由 ASCII 字符组成,则无论字符集如何,都会获得正确的结果。此外,对于任何字符集,始终可以获得列值的原始字节。
-
对于 X DevAPI 或 X DevAPI for C 应用程序,在创建新会话时,可以尝试多个主机,直到建立成功连接。主机列表可以在连接字符串或会话创建选项中给出,有或没有优先级。
X DevAPI 示例:
Session sess( "mysqlx://user:password@[" "server.example.com," "192.0.2.11:33060," "[2001:db8:85a3:8d3:1319:8a2e:370:7348]:1" "]/database" ); Session sess({ SessionSettings::USER, "user", SessionSettings::PWD, "password, SessionSettings::HOST, "server.example.com", SessionSettings::HOST, "192.0.2.11", SessionSettings::PORT, 33060, SessionSettings::HOST, "[2001:db8:85a3:8d3:1319:8a2e:370:7348]", SessionSettings::PORT, 1, SessionSettings::DB, "database" });
用于 C 示例的 X DevAPI:
sess = mysqlx_get_session_from_url( "mysqlx://user:password@[" "(address=127.0.0.1,priority=2)," "(address=example.com:1300,priority=100)" "]/database", err_msg, &err_code); mysqlx_opt_type_t *sess_opt = mysqlx_session_option_new(); mysqlx_session_option_set(sess_opt, MYSQLX_OPT_USER, "user", MYSQLX_OPT_PWD, "password", MYSQLX_OPT_HOST, "127.0.0.1", MYSQLX_OPT_PRIORITY, 2, MYSQLX_OPT_HOST, "example.com", MYSQLX_OPT_PORT, 1300, MYSQLX_OPT_PRIORITY, 100, MYSQLX_OPT_DB, "database"); mysqlx_session_t *sess = mysqlx_get_session_from_options( sess_opt, err_buf, &err_code );
该类
SqlResult
现在实现了getAffectedRowsCount()
和getAutoIncrementValue()
X DevAPI 方法。(缺陷号 25643081)为避免无意中更改集合中的所有项目,
Collection::modify()
和Collection::remove()
方法现在需要一个非空选择表达式作为参数。使用
Session
对象创建的连接现在默认加密。此外,ssl-enabled
连接选项已被替换为ssl-mode
. 允许 的ssl-mode
值为disabled
,required
(默认值)verify_ca
和verify_identity
。连接字符串中的选项名称现在被视为不区分大小写。默认情况下,选项值仍然区分大小写。
现在可以
stmt.execute()
多次调用。修改语句参数的调用方法应该修改用 发送的语句execute()
。这也适用于将新值绑定到命名参数。(漏洞 #25858159)SessionSettings
由于构造函数解析不明确,在 创建对象时发生编译器错误 。(漏洞 #25603191)collection.add()
如果使用两个 STL 容器参数调用,则编译失败。(缺陷号 25510080)-
现在支持这些表达式语法:
CHARSET(CHAR(X'65')) 'abc' NOT LIKE 'ABC1' 'a' RLIKE '^[a-d]' 'a' REGEXP '^[a-d]' POSITION('bar' IN 'foobarbar')
不支持这些表达式语法,但在使用它们时会提供更好的错误消息:
CHARSET(CHAR(X'65' USING utf8)) TRIM(BOTH 'x' FROM 'xxxbarxxx') TRIM(LEADING 'x' FROM 'xxxbarxxx') TRIM(TRAILING 'xyz' FROM 'barxxyz') 'Heoko' SOUNDS LIKE 'h1aso'
(漏洞 #25505482)