-
utf8
在 MySQL 8.0.30 中将字符集 重命名为utf8mb3
- 连同新utf8mb4
的排序规则 - 产生了与排序规则名称相关的错误。为了支持字符集名称更改和新排序规则,现在实施了多项 API 更改。对于使用 X DevAPI 或 X DevAPI for C 的应用程序(重大更改):
-
CharacterSet::utf8
枚举常量重命名为 ,CharacterSet::utf8mb3
但常量值 (21) 没有改变。CharacterSet::utf8
如果代码引用枚举常量 ,则针对新连接器编译现有应用程序会产生错误。笔记CharacterSet::utf8mb3
未使用新排序规则的 代码utf8mb4
预计可与旧连接器库一起使用,但前提是它已使用新连接器头文件进行编译。 characterSetName()
函数为常量 (21) 的值 返回的名称CharacterSet::utf8/utfmb3
从“utf8”更改为“utf8mb3”。成员
CollationInfo::getName()
方法 返回的排序规则名称 已更改。例如, 现在返回“utf8mb3_general_ci”而不是“utf8_general_ci”。CollationInfo
Collation<21>
Collation<21>::general_ci.getName()
尽管不是重大更改, 但已添加 所有新
CollationInfo
成员 (例如 )(例如)。utf8mb4_bg_0900_ai_ci
Collation<CharacterSet::utf8mb4>::bg_0900_ai_ci
对于使用遗留 JDBC API 的应用程序(重大更改):
MySQL_PreparedResultSetMetaData::getColumnCharset()
字符集的和MySQL_ResultSetMetaData::getColumnCharset()
方法 返回的字符集名称utf8/utf8mb3
已从“utf8”更改为“utf8mb3”。MySQL_PreparedResultSetMetaData::getColumnCollation()
的和MySQL_ResultSetMetaData::getColumnCollation()
方法 返回的排序规则名称utf8/utf8mb3
已更改。例如,以前的排序规则“utf8_general_ci”现在替换为“utf8mb3_general_ci”。
包含用于检查
utf8
字符集名称或其排序规则之一的逻辑的现有应用程序在与新连接器一起使用时可能会出现错误。如果必须使用 8.0.30 之前的连接器编译应用程序,则所有字符集和排序规则比较都应使用MYSQL_CONCPP_VERSION_NUMBER
宏进行保护。有关使用示例,请参阅 连接器/C++ 版本宏。每个相关的 ABI 都保持向后兼容,这意味着针对旧连接器源构建的应用程序可以正确链接到新连接器库。但是,新库现在报告不同的字符集和排序规则名称
utf8
,这种差异可能会破坏代码的逻辑。(缺陷号 34149700) -
通用 Linux 软件包现在是使用 GNU C 库 2.27 版和新的 C++ ABI (
_GLIBCXX_USE_CXX11_ABI=1
) 构建的。有关此更改的更多信息,请参阅 Generic Linux Notes。(缺陷号 33983351)
-
连接器/C++ 现在
MYSQL_CONCPP_VERSION_NUMBER
在公共头文件中提供宏以指示连接器的当前版本。的格式MYSQL_CONCPP_VERSION_NUMBER
为XYYZZZZ
,其中:X
是主版本号 (8)YY
是次要版本号 (00)ZZZZ
是微版本号(0030)
使用此宏,依赖于特定版本(例如 8.0.32)中引入的一个或多个功能的代码可以在编译源文件的一部分时执行条件测试。例如:
#if MYSQL_CONCPP_VERSION_NUMBER > 8000032 // use some 8.0.32+ feature #endif
这种类型的条件编译指令在
MYSQL_CONCPP_VERSION_NUMBER
宏未定义时也有效(使用 8.0.30 之前的头文件),在这种情况下,它被视为 0。但是,使用宏来检查早于 8.0.30 的版本是不可靠的,应该避免。有关其他用法示例,请参阅 连接器/C++ 版本宏。
现在可以使用 OpenSSL 3.0 编译连接器/C++。
与 Connector/C++ 捆绑在一起的 Protobuf 源已更新到 Protobuf 3.19.4。为了减少编译时间,此更新仅包含 Connector/C++ 所需的部分。
当一个或多个字段为空间数据类型
GEOMETRY
并且使用准备好的语句执行时,有效查询会发出错误。(漏洞 #19192707)