Documentation Home
MySQL 5.6 发行说明  /  MySQL 5.6.11 的变化(2013-04-18,全面上市)

MySQL 5.6.11 的变化(2013-04-18,全面上市)

此版本的已知限制:

笔记

如果您有InnoDB带有全文搜索索引的表,并且您正在从 MySQL 5.6.10 升级到 MySQL 版本(包括 MySQL 5.6.18),则服务器将在升级后无法启动(错误#72079)。此错误已在 MySQL 5.6.19 中修复。解决方法是在升级之前删除全文搜索索引,并在升级完成后重建全文搜索索引。

弃用和移除说明

  • 系统变量唯一支持的值 innodb_mirrored_log_groups 是 1,因此现在不推荐使用该变量。在启动时将其设置为 1 会导致警告。在启动时将其设置为 1 以外的值会导致错误并且服务器退出。此变量将在未来的版本中删除。

转速说明

  • 无法使用rpm -uvhyum localupdate将社区 RPM 升级到商业 RPM 。为了解决这个问题,MySQL 5.6.11 更新了 RPM spec 文件,结果如下:

    • 对于非升级安装(未安装现有的 MySQL 版本),可以使用 yum安装 MySQL 。

    • 对于升级,有必要清理任何早期的 MySQL 安装。实际上,更新是通过删除旧安装并安装新安装来执行的。

    其他详细信息如下。

    对于 MySQL 5.6.11 的非升级安装,可以使用yum安装:

    shell> yum install MySQL-server-NEWVERSION.glibc23.i386.rpm

    对于升级到 MySQL 5.6.11,升级是通过删除旧安装并安装新安装来执行的。为此,请使用以下过程:

    1. 删除现有的 5.6。X 安装。OLDVERSION是要删除的版本。

      shell> rpm -e MySQL-server-OLDVERSION.glibc23.i386.rpm

      对所有已安装的 MySQL RPM 重复此步骤。

    2. 安装新版本。 NEWVERSION是要安装的版本。

      shell> rpm -ivh MySQL-server-NEWVERSION.glibc23.i386.rpm

    或者,可以使用 yum完成删除和安装:

    shell> yum remove MySQL-server-OLDVERSION.glibc23.i386.rpm
    shell> yum install MySQL-server-NEWVERSION.glibc23.i386.rpm

    (错误#16445097、错误#16445125、错误#16587285)

添加或更改的功能

  • 复制: 这些功能以前只有在构建时支持复制时才GTID_SUBTRACT()可用 现在,无论它是如何构建的,使用这个库时这些函数总是可用的。 GTID_SUBSET()libmysqld

  • MySQL 不再使用默认的 OpenSSL 压缩。(漏洞 #16235681)

  • 对于服务器发送给使用过期密码进行身份验证的客户端的错误,现在有一个明显的错误代码 ( ER_MUST_CHANGE_PASSWORD_LOGIN)。(漏洞 #16102943)

  • mysql_config_editor现在支持 --port--socketUnix 套接字文件名的选项。(漏洞 #15851247)

  • mysqlcheck有一个新 --skip-database选项。选项值是应跳过检查的数据库的名称(区分大小写)。

    mysql_upgrade将此选项添加到 它生成的mysqlcheck命令中,以在升级mysql 数据库中的系统表之前升级其他数据库中的表:它先升级 mysql数据库,然后升级除该数据库之外的所有 mysql数据库。这避免了在升级系统表之前升级用户表时可能发生的问题。(错误#14697538、错误#68163、错误#16216384)

修正错误

  • 不相容的变化;分区:KEY在 MySQL 5.5 中与数字、日期和时间、 ENUM以及 的分区散列函数的变化SET使得在任何受影响的列类型上使用分区或子分区的表 KEY以及在与 MySQL 5.1 不兼容的 MySQL 5.5 或更高版本服务器上创建的服务器。这是因为 MySQL 5.5 或更高版本服务器计算的分区 ID 几乎肯定与 MySQL 5.1 服务器针对相同表定义和数据计算的分区 ID 不同,这是这些函数更改的结果。

    导致此问题的 MySQL 5.5中分区实现的主要更改KEY如下: 1. 用于数字和日期和时间列的哈希函数从二进制更改为基于字符。2. 用于散列ENUMSET列的基数从latin1 ci字符变为二进制。

    该修复涉及在 MySQL 5.5 及更高版本中添加选择用于KEY 分区的散列类型的功能,这是通过 对和选项的新ALGORITHM扩展实现的。指定会导致服务器使用 MySQL 5.1 中实现的散列函数;using使服务器使用 MySQL 5.5 及更高版本的散列函数。 是默认值。使用 的适当值,您可以执行以下任何任务: PARTITION BY KEYCREATE TABLEALTER TABLEPARTITION BY KEY ALGORITHM=1 ([columns])ALGORITHM=2ALGORITHM=2ALGORITHM

    • 在 MySQL 5.5 及更高版本中创建KEY与 MySQL 5.1 兼容的分区表,使用 CREATE TABLE ... PARTITION BY KEY ALGORITHM=1 (...).

    • 降级KEY在 MySQL 5.5 或更高版本中创建的分区表以与 MySQL 5.1 兼容,使用ALTER TABLE ... PARTITION BY KEY ALGORITHM=1 (...).

    • KEY将最初在 MySQL 5.1 中创建的分区表 升级为在 MySQL 5.5 及更高版本中使用哈希,使用ALTER TABLE ... PARTITION BY KEY ALGORITHM=2 (...).

      重要提示:升级这些表后,它们不能再与 MySQL 5.1 一起使用,除非它们首先ALTER TABLE ... PARTITION BY KEY ALGORITHM=1 (...)在支持此选项的 MySQL 服务器上再次降级。

    此语法不向后兼容,并且会在旧版本的 MySQL 服务器中导致错误。生成 CREATE TABLE ... PARTITION BY KEY语句时, mysqldump将任何出现的 ALGORITHM=1ALGORITHM=2 条件注释括起来,这样它就会被版本不低于 5.5.31 的 MySQL 服务器忽略。升级的另一个考虑因素是 MySQL 5.6.11 之前的 MySQL 5.6 服务器不会忽略ALGORITHM 当由 MySQL 5.5 服务器生成时,此类语句中的选项,由于条件注释引用版本 5.5.31;在这种情况下,您必须手动编辑转储并删除或注释掉出现的选项,然后再尝试将其加载到 MySQL 5.6.10 或更早的 MySQL 5.6 服务器中。对于 MySQL 5.6.11 或更高版本的mysqldump生成的转储,这不是问题,此类注释中使用的版本是 5.6.11。有关详细信息,请参阅 ALTER TABLE 分区操作

    作为此修复的一部分, InnoDB之前已读取已删除行的虚假断言导致服务器在删除行时断言该行位于错误的分区中,该错误断言也已删除。(错误#14521864、错误#66462、错误#16093958、错误#16274455)

    参考资料:另请参阅:Bug #11759782。

  • 不兼容的更改: 对于调试版本,在违反最大密钥长度限制的严格 SQL 模式下创建 InnoDB 表会导致服务器退出。

    此错误修复导致的行为更改:在严格的 SQL 模式下,违反键长度限制现在会导致错误(并且不会创建表),而不是警告并将键截断为最大键长度。这适用于所有存储引擎。(漏洞 #16035659)

  • 重要变更;复制

    重要的

    此修复已在 MySQL 5.6.12 中恢复。请参阅 MySQL 5.6.12 中的更改(2013-06-03,一般可用性)

    执行执行隐式提交但在 gtid_next设置为任何值时不记录其更改的语句AUTOMATIC是不允许的。现在,在这种情况下,语句会因错误而失败。这包括以下列表中的语句:

    (漏洞 #16062608)

    参考资料:另请参阅:错误 #16484323。

  • 重要变更;复制:mysqlbinlog 报告的版本号--version已增加到 3.4。(漏洞 #15894381,漏洞 #67643)

  • 重要的提示; 复制: 使用基于行的日志记录从表复制到同名视图导致从站失败。现在,当使用基于行的日志记录时,在执行任何 DML 之前检查目标对象类型,如果从站上的目标实际上不是表,则会给出错误。

    笔记

    仍然可以使用基于语句的日志记录从表复制到同名视图。

    (错误#11752707,错误#43975)

  • 表现; InnoDB:通过读取有关用于每个表的缓存策略的缓存信息,切换InnoDB memcached 接口使用 的 MySQL 表 (使用@@这种优化使您可以在使用 memcached 接口的会话期间频繁地在表之间切换,而不会因每次检查表元数据而产生 I/O 开销。(漏洞 #16206654)

  • 表现; InnoDB: 改进了对具有许多已删除但尚未 清除的行的表的操作的性能。加速主要适用于执行批量删除或更新 主键列的工作负载,以及系统繁忙到足以经历 清除滞后的工作负载。(漏洞 #16138582,漏洞 #68069)

  • 表现; InnoDB:使用压缩DROP TABLE的表 的 可能比必要的慢,导致停顿几秒钟。作为操作的一部分,MySQL 在与表相关的 缓冲池中不必要地解压缩 页面。(漏洞 #16067973)DROP

  • 表现; InnoDB:AIO子系统变得更高效时使用的 I/O 例程,用于将连续的 I/O 请求合并为单个操作。此修复解决了 5.6 开发周期中引入的性能问题。(缺陷 #16043841,缺陷 #67973)

  • InnoDB:ADD PRIMARY KEY列在ALTER TABLE语句中重新排序时(例如ALTER TABLE t1 ADD PRIMARY KEY(a,b), CHANGE a a INT AFTER b,日志申请 UPDATE操作无法找到行。(漏洞 #16586355)

  • InnoDB: 对使用列前缀添加的表的ALTER TABLE操作 可能会产生不正确的结果。(漏洞 #16544336)InnoDBPRIMARY KEY

  • InnoDB: 对于ALTER TABLE操作 InnoDB的表操作,表上的其他事务可能会在复制过程中失败。但是,如果此类事务发出部分回滚,则回滚将被视为完整回滚。(漏洞 #16544143)

  • InnoDB: 在全文搜索中解析定界搜索字符串(例如 abc-def)时, InnoDB现在使用与 MyISAM. (漏洞 #16419661)

  • InnoDB:PERFORMANCE_SCHEMA解决了 InnoDB键声明 的命名不一致问题 (漏洞 #16414044)

  • InnoDB:表 中的状态值 innodb_ft_config不会更新。innodb_ft_config用于内部配置,不应用于统计信息目的。为避免混淆,供内部使用的列值已从innodb_ft_config表中删除。此修复程序还删除了 innodb_ft_config无意中公开的表和其他与内部全文搜索相关的表。(漏洞 #16409494,漏洞 #68502)

  • InnoDB:!recv_no_log_write读取页面时崩溃恢复因断言而 失败 (漏洞 #16405422)

  • InnoDB: 此修复禁用了在压缩表上额外拆分聚簇索引叶页的条件。额外的页面拆分只是为了为将来的更新预留空间,这样就可以避免将来的页面拆分。(漏洞 #16401801)

  • InnoDB: 对于InnoDB表,如果PRIMARY KEY上的 aVARCHAR为空,索引页压缩可能会失败。(漏洞 #16400920)

  • InnoDB: 页面InnoDB分割算法可能会过度递归。(漏洞 #16345265)

  • InnoDB:在 key 期间对引用和引用之间的兼容性测试不当 ALTER TABLE ... ADD FOREIGN可能会导致服务器退出。(错误号 16330036)

  • InnoDB: 导入带有配置文件的表空间不会导入数据文件。当使用复制和重命名方法更改表后所有页面都没有从缓冲池中刷新时,就会发生此问题。此修复可确保在使用复制和重命名方法更改表时从缓冲池中清除所有页面。(漏洞 #16318052)

  • InnoDB: 回滚不包括只读事务对临时表所做的更改。(漏洞 #16310467)

  • InnoDB: 当使用ALTER TABLEAUTO_INCREMENT列值设置为用户指定的值时,InnoDB 会将 AUTO_INCREMENT值设置为用户指定的值,即使该AUTO_INCREMENT值大于用户指定的值。此修复可确保将 AUTO_INCREMENT值设置为用户指定值和 MAX(auto_increment_column)+1 中的最大值,这是预期的行为。(漏洞 #16310273)

  • InnoDB: RENAME TABLE由于 MySQL mutex 获取死锁会导致挂起。(漏洞 #16305265)

  • InnoDB: 对于调试版本,InnoDB状态导出受可能导致服务器退出的竞争条件的影响。(漏洞 #16292043)

  • InnoDB: 使用innodb_api_enable_mdl=OFF,需要表副本ALTER TABLE的表的操作 InnoDB(漏洞 #16287411)

  • InnoDB:heap->magic_n == MEM_BLOCK_MAGIC_N由于 row_merge_read_clustered_index()返回错误 将发生断言失败(漏洞 #16275237)

  • InnoDB: InnoDB 现在通过直接调用该函数来中止在 Windows 上的执行 abort(),就像在其他平台上一样。(漏洞#16263506)

  • InnoDB: 此修复删除了与 page_hash 锁相关的不必要的调试断言,它只影响调试构建。调试断言不再有效,应该在 MySQL 5.6 中引入 hash_lock 数组时将其删除。(漏洞 #16263167)

  • InnoDB: 内部读取操作实际上是异步的,但可能会被错误分类为同步操作。当 I/O 请求比预期返回得更快时,线程的调度效率可能会很低。该问题主要影响 预读请求,因此对用户查询执行的 I/O 影响相对较小。(错误#16249505,错误#68197)

  • InnoDB:lock_validate函数仅出现在调试版本中,获取并释放互斥量以避免占用它们。此行为引入了一个窗口,其中可以在代码遍历同一组数据时对哈希表进行更改。此修复更新lock_validate逻辑以收集所有必须验证锁的记录、释放互斥体并运行循环以验证记录锁。(漏洞 #16235056)

  • InnoDB: ALTER TABLE函数将执行检查以查看 InnoDB 是否处于只读模式 (srv_read_only_mode=true)。如果 InnoDB 处于只读模式,则检查将返回成功状态并且不执行任何其他操作。此修复将 srv_read_only_mode检查条件替换为调试断言。(漏洞 #16227539)

  • InnoDB: 当 InnoDB 缓冲池几乎被 4KB 压缩页填满时,插入 16KB 压缩表会导致 8KB pages_free增加,这可能会减慢或停止插入。(漏洞 #16223169)

  • InnoDB: 此修复更新了 InnoDB 代码ha_innodb.cchandler0alter.cc使用 TABLE::key_info,而不是同时 TABLE::key_infoTABLE_SHARE::key_info。(漏洞 #16215361)

  • InnoDB: 修改 InnoDB 锁定代码时,无意中删除了对注册锁定等待的调用。此修复将回调添加回 InnoDB 锁定代码。(漏洞 #16208201)

  • InnoDB:如果 MySQL 服务器在从更改缓冲区 应用清除操作的精确时刻停止, 则在下一次重新启动期间可能会再次错误地执行该操作。解决方法是设置配置选项 innodb_change_buffering=changes,以关闭清除操作的更改缓冲。(错误#16183892,错误#14636528)

  • InnoDB: InnoDB memcached插件可能会在重负载下遇到严重错误,例如基准运行产生的错误。(漏洞 #16182660,漏洞 #68096)

  • InnoDB: 直接调用该 trx_start_if_not_started_xa_low()函数会导致调试断言。(漏洞 #16178995)

  • InnoDB: 在锁定等待外键表插入的情况下, InnoDB可能会报告错误的字典更改错误并导致插入失败而不是重试。(漏洞 #16174255)

  • InnoDB:ALTER TABLE表上 的就地InnoDB可能无法从表中删除旧主键的统计信息 mysql.innodb_index_stats。(漏洞 #16170451)

  • InnoDB: 在某些情况下,死锁检测不起作用,导致会话挂起等待锁定等待超时。(错误号 16169638)

  • InnoDB:CREATE TABLE对 进行页面压缩期间的算术下溢 InnoDB可能导致服务器退出。(漏洞 #16089381)

  • InnoDB: 对于调试构建,表的在线ALTER TABLE操作InnoDB可能会导致在表重建期间服务器退出。(漏洞 #16063835)

  • InnoDB: 在某些情况下,InnoDB清除协调器没有使用所有可用的清除线程,导致清除活动不理想。(漏洞 #16037372)

  • InnoDB: 在无法处理未对齐内存访问的系统上,根据堆栈帧对齐,SIGBUS启动期间可能会发生错误。在 Solaris 64 位系统上发现了此问题。(漏洞 #16021177)

  • InnoDB: ALTER TABLEInnoDB不是完全原子的。(漏洞 #15989081)

  • InnoDB:innodb_mirrored_log_groups 设置为默认值 1 以外的值时,MySQL 服务器在加载 InnoDB memcached 插件时在启动期间遇到严重错误。在早期版本中,更改此设置时服务器将拒绝启动(但不显示错误)。此修复清除了针对此配置选项不受支持的值的错误处理。(漏洞 #15907954,漏洞 #67670)

  • InnoDB:innodb_sync_array_size 错误地允许在运行时配置变量 。如文档所述, innodb_sync_array_size必须在 MySQL 实例启动时配置,之后不能更改。此修复程序 innodb_sync_array_size按预期更改为非动态变量。(漏洞 #14629979)

  • InnoDB: 文件系统级别的错误,例如打开的文件太多,可能会在 ALTER TABLE操作期间导致未处理的错误。该错误可能伴随着 Valgrind 警告和此断言消息:

    Assertion `! is_set()' failed.
    mysqld got signal 6 ;

    (错误#14628410,错误#16000909)

  • InnoDB: 服务器可能会在尝试 InnoDB重组或压缩压缩的二级索引页面时退出。(漏洞 #14606334)

  • InnoDB:在操作等待表空间上的挂起 I/O 操作 完成时执行的 DML 操作RENAME TABLE将导致死锁。(漏洞 #14556349)

  • InnoDB: 一条RENAME TABLE语句在超时之前可能会停顿几分钟。使用compression启用更改缓冲的表可能会出现此问题 。(漏洞 #14556349)

  • InnoDB: 如果服务器是使用该 skip-innodb 选项启动的,或者InnoDB无法启动,查询这些信息模式表中的任何一个都会导致严重错误:

    (漏洞 #14144290)

  • InnoDB: 在线 DDL有一个限制,阻止重命名列并在单个 ALTER TABLE语句中添加涉及该列的外键。现在,在单个语句中允许这种操作组合。(漏洞 #14105491)

  • InnoDB: 当打印出长信号量等待诊断时, sync_array_cell_print()遇到了由竞争条件引起的分段违规(SEGV)。此修复通过允许在打印时释放单元格来解决竞争条件。(漏洞 #13997024)

  • InnoDB:innodb_version 对于 MySQL 5.1 中的 InnoDB 插件以及 MySQL 5.5、5.6 InnoDB及更高版本中的集成组件 的值由于InnoDB和 MySQL Server 开发周期完全集成和同步,现在变量返回的值与 innodb_version变量相同version 。(错误#13463493,错误#63435)

  • InnoDB: 尝试具有相同结构的表 InnoDB 的全文搜索 (FTS) 停用词列表 会导致错误。显示新 表是用创建的。FTS 停用词表有效性检查仅支持 latin1。 此修复扩展了对所有支持的字符集的有效性检查。(漏洞 #68450,漏洞 #16373868)InnoDBINFORMATION_SCHEMA.INNODB_FT_DEFAULT_STOPWORDSHOW CREATE TABLEInnoDBCHARSET=utf8InnoDB

  • InnoDB:srv_parse_log_group_home_dirs此修复删除了和相关标头注释 的剩余原型代码 (缺陷 #68133,缺陷 #16198764)

  • InnoDB: 当再次使用同一个表(游标)实例时,终止查询会导致 InnoDB 断言失败。这是 Bug#14704286 修复引入的回归错误的结果。该修复程序引入了一项检查来处理长时间运行的查询的终止信号,但游标未恢复到正确的状态。(缺陷 #68051,缺陷 #16088883)

  • InnoDB: 在启动时,InnoDB 在 64 位 Linux 和 64 位 Windows 系统上报告一条消息,指出 CPU 不支持 crc32 指令。在 Windows 上,即使 CPU 支持,InnoDB 也不使用 crc32 指令。此修复修改了消息的措辞并实施了对 crc32 指令可用性的检查。(缺陷 #68035,缺陷 #16075806)

  • InnoDB: 未检查内部生成的外键名称的长度。如果内部生成的外键名称超过 64 个字符的限制,这将导致来自 SHOW CREATE TABLE. 此修复程序检查内部生成的外键名称的长度,并在超过限制时报告错误消息。(错误#44541,错误#11753153)

  • 分区: ALGORITHM = INPLACE在 MySQL 5.6.10 中不允许对分区表进行操作的 DDL 语句,可以再次与此类语句一起使用。(漏洞 #16216513)

    参考资料:另请参阅:错误 #14760210。

  • 分区: 对按范围分区并 TO_DAYS()用作分区函数的表的查询在修剪时始终包括表的第一个分区。无论 BETWEEN此类查询的子句中使用的范围如何,都会发生这种情况。(错误#15843818,错误#49754)

  • 分区:针对视图的 执行 ALTER TABLE ... DROP PARTITION导致服务器崩溃,而不是像预期的那样因错误而失败。(漏洞 #14653504)

  • 分区: 如果同时使用 和 且基础表已分区,则查询结果未 DISTINCT排序ORDER BY。(漏洞 #14058167)

  • 分区: 将任意数量的行插入到 ARCHIVE使用超过 1000 个分区的表中,然后尝试删除该表会导致 MySQL 服务器失败。(漏洞 #13819630,漏洞 #64580)

  • 复制: 当使用 GTID 和二进制日志自动定位时,每当从服务器重新连接(由于 I/O 线程故障或主服务器更改等原因)时,主服务器必须扫描所有二进制日志,然后才能将任何事件发送给从服务器。现在,master 从最旧的二进制日志开始,其中包含在 slave 上找不到的任何 GTID。(漏洞 #16340322,漏洞 #68386)

  • 复制: 当master的服务器版本大于等于10时,复制到服务器版本较低的slave失败。(错误#16237051,错误#68187)

  • 复制: 当将 MySQL 5.6 主服务器复制到较旧的从服务器时,错误 1193 (ER_UNKNOWN_SYSTEM_VARIABLE) 被记录为一条消息,例如Unknown system variable 'SERVER_UUID' on master, maybe it is a *VERY OLD MASTER*。此消息已得到改进以包含更多信息,类似于此消息:主服务器上的未知系统变量“SERVER_UUID”。一个可能的原因是该变量在主服务器(版本:5.5.31)上不受支持,即使它在从服务器(版本:5.6.11)上也是如此。(错误#16216404,错误#68164)

  • 复制: 当 MTS 开启并应用事务时,从属协调器在事务事件上遇到校验和错误时会挂起。这是由于死锁情况造成的,在这种情况下,协调器假设正常停止,而工作人员等待协调器调度更多事件。对于调试构建,问题表现为断言失败,这是由于协调器thd->is_error() 在遇到错误时没有设置。(漏洞 #16210351)

  • 复制:从二进制日志中读取时 ,用户变量的零长度名称(例如 @``)被错误地认为是数据或网络损坏的标志。(漏洞 #16200555,漏洞 #68135)

  • 复制: mysqlbinlog可以连接到远程服务器并读取其二进制日志。在 MySQL 5.6 及更高版本中,此工具还可以等待服务器生成并发送其他事件,实际上表现得像从服务器连接到主服务器。在服务器发送心跳的情况下, mysqlbinlog无法正确处理。结果, mysqlbinlog此时失败,没有从服务器读取任何更多事件。为了解决这个问题, mysqlbinlogHEARTBEAT_LOG_EVENT现在忽略 它接收到的任何类型的二进制日志事件(漏洞 #16104206)

  • 复制: 当与检索一个或多个状态变量 、 、 、 或 STOP SLAVE的语句同时发出时,可能会导致死锁 。(漏洞 #16088188,漏洞 #67545)SHOW STATUSSlave_retried_transactionsSlave_heartbeat_periodSlave_received_heartbeatsSlave_last_heartbeatSlave_running

    参考资料:另请参阅:Bug #16088114。

  • 复制: 反引号 (`) 字符在内部生成的 SQL 语句中并不总是得到正确处理,这有时会导致从站出错。(漏洞 #16084594,漏洞 #68045)

    参考资料:此问题是 Bug #14548159、Bug #66550 的回归。

  • 复制: 为了使用 GTID 提供或恢复服务器,可以设置gtid_purged一个给定的 GTID 集,列出已导入的事务。此操作要求全局 gtid_executedgtid_purged服务器系统变量为空。(这样做是为了避免覆盖服务器生成的 GTID 的可能性。)

    错误消息GTID_PURGED can only be set when GTID_EXECUTED is empty在未满足此要求时引发的错误消息可能会造成混淆或误导,因为它没有指定受影响变量的范围。为了防止这种情况发生,引用与 GTID 相关的变量的错误消息现在指定了任何此类变量的范围。(漏洞 #16084426,漏洞 #68038)

  • 复制:对于所有回滚, 会话级别的值 gtid_next在从属服务器上被错误地重置,这意味着 GTID 可能会在多语句事务中丢失,从而导致从属服务器因 ER_GTID_NEXT_TYPE_UNDEFINED_GROUP 错误而停止。现在,只有在回滚完整事务或 autocommit启用时才会执行此操作。(漏洞 #16084206)

  • 复制: 使用--replicate-*选项(请参阅 副本服务器选项和变量)在某些情况下可能会导致从属内存泄漏。(错误#16056813,错误#67983)

  • 复制: 在某些情况下,当从服务器无法识别主服务器的服务器版本时,这可能会导致从服务器发生故障。(漏洞 #16056365)

  • 复制: 在某些情况下,转储线程可能会发送与格式描述事件不同步的心跳。此问题的影响之一是,在从备份数据目录配置新服务器并设置 --gtid-mode=ON和启用自动定位后(请参阅CHANGE MASTER TO Statement),复制无法启动,出现错误Read invalid event from master...。同样的问题也可能导致基于 GTID 的复制由于在主服务器意外关闭后跳过的事件而失败。(漏洞 #16051857)

  • 复制:ulong复制中使用的表 ID在主服务器和 定义为类型 uint。此外,二进制日志事件中表 ID 的最大值为 6 个字节 (281474976710655)。这些因素的结合导致了以下问题:

    • 当为表分配的 ID 大于 . 时,从站上的数据可能会丢失uint

    • 大于 281474976710655 的表 ID 作为 281474976710655 写入二进制日志。

    • 当从站遇到两个具有相同表 ID 的表时,这会导致从站停止。

    为了解决这些问题,IDs 现在由 master 和 slave 定义为类型ulonglong,但限制在 0 到 281474976710655 的范围内,超过此值时从 0 重新开始。(漏洞 #14801955,漏洞 #67352)

  • 复制: 用于中继日志信息的内部对象在释放内存之前仅被部分删除。(漏洞#14677824)

  • 复制: 在某些情况下——在转储线程读取事件循环中检测到 EOF 之后,并且在决定是否更改为新的二进制日志文件之前——在做出此决定之前将新事件写入二进制日志是可能的. 如果此时发生日志轮换,则 EOF 检测后发生的任何事件都将被丢弃,从而导致数据丢失。现在在这种情况下,将采取措施确保在允许日志轮换发生之前处理所有事件。(错误#13545447,错误#67929)

    参考资料:另请参阅:Bug #16016886。

  • 复制: 如果在写入二进制日志时磁盘已满,则服务器会挂起,直到手动释放空间。完成此操作后,MySQL 服务器可能会失败,因为在不需要时设置了内部状态值。现在在这种情况下,不是尝试设置此状态,而是在错误日志中写入警告。(缺陷 #11753923,缺陷 #45449)

  • Microsoft Windows: 开始 --shared-memory支持共享内存连接的服务器在接收来自多个线程的请求时可能会崩溃。(漏洞 #13934876)

  • Solaris: mysql_install_db在 Solaris 10 稀疏根区域中不起作用。(缺陷 #68117,缺陷 #16197860)

  • InnoDB现在向线程池插件报告行和表锁。否则可能会发生线程组内的死锁。(漏洞 #16448639)

  • 未能正确处理全文搜索通配符可能会导致服务器退出。(漏洞 #16446108)

  • SHOW ENGINE PERFORMANCE_SCHEMA STATUS当正确的值超过 4GB 时,可能会报告不正确的内存分配值。(漏洞#16414644)

  • 如果准备好的语句在打开 SQL 处理程序时尝试使用现有视图的名称创建表,则服务器可能会退出。(漏洞 #16385711)

  • Performance Schema 语句标记化开销减少了。(漏洞 #16382260)

  • 语句中的长数据库名称GRANT 可能会导致服务器退出。(漏洞 #16372927)

  • 在 Linux 上,涉及的竞争条件epoll() 可能会导致线程池插件错过事件。这最有可能发生在具有超过 16 个内核的系统上。(漏洞 #16367483)

  • 一些聚合查询试图分配过多的内存。(漏洞 #16343992)

  • 对于调试版本,如果在发出语句之前启用自动提交的语句失败,则可以引发断言 XA START。(漏洞 #16341673)

  • 非常小join_buffer_size 的值可能会引发断言。(漏洞 #16328373)

  • MySQL 发行版中的BUILD-CMAKE文件已更新为包含CMake 信息的正确 URL。(漏洞 #16328024)

  • 在子查询的连接子句中执行带有子查询的准备好的语句时,优化器尝试删除冗余子查询子句会引发断言ON。(漏洞 #16318585)

    参考资料:此问题是 Bug #15875919 的回归。

  • IN如果查询在子句中包含子查询,而子查询在子句中包含 XOR操作, 则返回不正确的结果WHERE。(漏洞 #16311231)

  • 如果将CREATE USER语句记录到常规查询日志并且old_passwords系统变量设置为 2,则可能会发生 Valgrind 故障。(缺陷 #16300620)

  • 对于调试版本,检查密码约束可以为更新密码的语句提出断言。(漏洞 #16289303)

  • 将数值转换为 BIT可能会产生意想不到的结果。(漏洞 #16271540)

  • 修复了使用 XCode 4.6 编译时的警告。_XOPEN_SOURCE修复了在环境中定义了或 isoctal宏时编译时的警告。(错误#16265300、错误#60911、错误#12407384)

  • 在范围优化器中,索引合并失败可能导致服务器退出。(漏洞 #16241773)

  • 对于升级操作,RPM 包产生了关于无法访问.err文件的不必要的错误。(漏洞 #16235828)

  • 使用 LooseScan 半连接策略评估的范围谓词的查询可能会返回重复的行。(漏洞 #16221623)

    参考:这个问题是 Bug #14728469 的回归。

  • 某些法律HAVING条款被认为无效而被拒绝。(漏洞 #16221433)

  • yaSSL 没有执行正确的填充检查,而是只检查明文的最后一个字节,并用它来确定要删除多少字节。(漏洞 #16218104)

  • PROCESSLIST_INFO性能模式可能会为表的列 返回不正确的值 threads。(漏洞 #16215165)

  • 在搜索词是引号短语的某些情况下,使用布尔模式的全文查询可能会返回零结果:

    • 如果引用的短语前面有 + 号。例如,布尔 + 运算符和短语的组合将返回零结果:

      WHERE MATCH(content) AGAINST('+"required term due to plus sign"' IN BOOLEAN MODE)
    • 如果引用的短语包含任何停用词。例如,短语中的停用词“the”导致查询返回零结果:

      WHERE MATCH(content) AGAINST('"stopword inside the phrase"' IN BOOLEAN MODE)

    (漏洞 #16206253,漏洞 #68150)

  • mysql_config --libs显示不正确的输出。(漏洞 #16200717)

  • 为选择调用范围优化器NULL 导致服务器退出。(漏洞 #16192219)

  • 如果在 aSELECT中, HAVING子句包含一个函数调用,该函数调用本身包含所选表达式的别名,则服务器有时会退出。(漏洞 #16165981)

  • const对于调试版本,由于对涉及表 的连接的适用索引计算不正确,服务器可能会退出 。(漏洞 #16165832)

  • 范围优化中的错误有时会导致索引合并联合的条件计算不正确。这可能会导致丢失行。(错误#16164031、错误#68194、错误#16229746)

  • 对于未为其提供列值 的语句,该列设置为“0000-00-00 00:00:00”,而不是当前时间戳。(漏洞 #16163936)CREATE TABLE (... col_name TIMESTAMP DEFAULT CURRENT_TIMESTAMP ...) ... SELECTSELECTTIMESTAMP

  • 在准备好的语句中使用GROUP BY WITH ROLLUP可能会导致服务器退出。(漏洞 #16163596)

  • 启用线程池插件后,大量连接可能导致 Valgrind 恐慌或客户端无法连接。(漏洞 #16088658,漏洞 #16196591)

  • 从属工作线程缺少性能模式检测。(漏洞 #16083949)

  • 服务器未正确执行 EXPLAIN FORMAT=JSON某些格式错误的查询。(漏洞 #16078557)

  • 使用基于语句的二进制日志记录,删除 TEMPORARY InnoDB表可能会导致分段错误。(漏洞 #16076275)

  • slave_rows_search_algorithms 系统变量设置为不合适的值可能会导致服务器退出。(漏洞 #16074161)

  • SET PASSWORD并且 GRANT ... IDENTIFIED BY对使用身份验证插件进行身份验证的用户的密码没有影响,该插件访问存储在 mysql.user 表外部的密码。但是尝试更改此类用户的密码不会产生任何警告,从而给人一种密码已被更改但实际上并未更改的印象。现在 MySQL 发出 ER_SET_PASSWORD_AUTH_PLUGIN 警告,表明该尝试已被忽略。(漏洞 #16072004)

  • 目录名称操作可能导致 OS X 和 Windows 上的堆栈溢出。(漏洞 #16066243)

  • 初始test数据库包含一个 无法工作的dummy.bak文件。DROP DATABASE不再包含此文件。此外,db.opt现在包含一个包含以下行的文件:

    default-character-set=latin1
    default-collation=latin1_swedish_ci

    (漏洞 #16062056)

  • 使用存储函数和用户变量的某些组合发出PREPARE语句导致服务器退出。(漏洞 #16056537)

  • 将系统变量设置为DEFAULT可能会导致服务器退出。(漏洞 #16044655)

  • 对于调试版本,如果服务器在禁用二进制日志记录的情况下启动,SHOW RELAYLOG EVENTS则从存储过程中执行会引发断言。(漏洞 #16043173)

  • 查询解析器因某些语法错误而泄漏内存。(漏洞 #16040022)

  • 在关闭期间,服务器可能会尝试锁定未初始化的互斥体。(漏洞 #16016493)

  • --default-authentication-plugin选项允许无效的插件值,并且并不总是将 old_passwords系统变量设置为适合指定插件的值。(漏洞 #16014394)

  • --character-set-server选项可以将连接字符集系统变量设置为ucs2不允许的值。(错误#15985752,错误#23303391)

  • 在某些情况下,mysql --secure-auth 允许使用旧的(pre-4.1)散列格式将密码发送到服务器。(漏洞 #15977433)

  • 当一个分区丢失时,代码 in ha_innodb.cc将重试 10 次,每次按住 时休眠一微秒 LOCK_open。分区表的重试逻辑是作为 Bug#33349 的修复程序引入的,但不包括用于验证它的测试用例。此修复删除了分区表的重试逻辑。如果 Bug#33349 中报告的问题再次出现,将探索不同的解决方案。(漏洞 #15973904)

  • 连接恰好 32 个表并包含一个 HAVING子句返回空结果。(漏洞 #15972635)

  • 库字符串mysys格式化例程可能会错误处理宽度说明符。(漏洞 #15960005)

  • 表创建操作将条目添加到 file_instancesPerformance Schema 表中,但这些条目并不总是因表删除操作而被删除。(漏洞 #15927620)

  • 启用索引条件下推后,下推条件不包含所用索引中的列的查询可能会很慢。(漏洞 #15896009)

  • 带有按不在选择列表中的类型的外部列排序的EXISTS/IN/ALL/ANY子 查询的子查询的查询导致触发断言。(漏洞 #15875919)ORDER BYBLOB

    参考资料:另请参阅:Bug #14728142。

  • 在特殊情况下,优化器不考虑适用于查询处理的索引,从而可能导致执行不理想和 EXPLAIN输出不正确。(错误#15849135,错误#16094171)

  • 如果表名包含非字母数字字符,则使用索引创建InnoDBFULLTEXT可能会遇到严重错误。(错误#14835178,错误#16036699)

  • 在高客户端争用期间启用查询缓存可能会导致服务器退出。(漏洞 #14727815)

  • MSI 安装程序以每用户 模式安装 MySQL,如果两个用户在同一台​​计算机上安装 MySQL,这可能会导致冲突或无法检测到现有安装。现在 MSI 安装程序使用每台机器 安装模式。(漏洞 #14711808)

  • 服务器有时无法遵守 MAX_CONNECTIONS_PER_HOUR对用户连接的限制。(漏洞 #14627287)

  • IN将具有聚合函数的子查询 转换为子查询后,优化器可能会返回不正确的结果EXISTS。(漏洞 #14586710)

  • SET PASSWORD匿名用户无法正常工作。(漏洞 #14561102)

  • 当客户端程序失去与 MySQL 服务器的连接时,或者如果服务器在客户端执行后开始关闭 mysql_stmt_prepare(),next mysql_stmt_prepare()将返回一个错误(如预期的那样),但后续 mysql_stmt_execute()调用会使客户端崩溃。(漏洞 #14553380)

  • 以前,如果--login-path给出了多个选项,mysql_config_editor会忽略除最后一个选项之外的所有选项。现在多个--login-path 选项会导致错误。(漏洞 #14551712)

  • SHOW COLUMNS在定义为列的视图上UNION可能 Geometry会导致服务器退出。(漏洞 #14362617)

  • sha256_password_private_key_pathsha256_password_public_key_path 系统变量表示认证插件的密钥文件 , sha256_password但服务器未能正确检查密钥文件是否有效。现在,如果任一密钥文件无效,服务器将记录错误并退出。(漏洞 #14360513)

  • SET var_name = VALUES(col_name)可能导致服务器退出。现在禁止使用此语法,因为在SET上下文中没有列名并且语句返回 ER_BAD_FIELD_ERROR。(漏洞 #14211565)

  • 客户端/服务器协议中的COM_CHANGE_USER命令没有正确使用命令包中的字符集编号,导致包中其他值的字符集转换不正确。(漏洞 #14163155)

  • FORMAT()使用语言环境和非常大的数字 调用该函数可能会导致服务器退出。(漏洞 #14040155)

  • yaSSL 拒绝了一些有效的服务器 SSL 证书。(漏洞 #13777928)

  • 某些与插件相关的情况可能会使用户帐户无法使用:

    • 该帐户需要未加载的身份验证插件。

    • 该帐户需要sha256_password 身份验证插件,但服务器启动时未按此插件的要求启用 SSL 或 RSA。

    服务器现在默认检查这些条件,并对不可用的帐户发出警告。此检查会减慢服务器初始化和FLUSH PRIVILEGES,因此通过新 validate_user_plugins系统变量将其设为可选。默认情况下启用此变量,但如果不需要额外检查,则可以在启动时禁用它以避免性能下降。(错误#13010061,错误#14506305)

  • 将未知时区规范传递给 CONVERT_TZ()导致内存泄漏。(漏洞 #12347040)

  • 删除了 MySQL 发行版目录中 的过时文件linuxthreads.txtglibc-2.2.5.patch文件 。Docs(漏洞 #11766326)

  • mysql_install_db没有 '_'在写入授权表的语句的主机名中转义。(漏洞 #11746817)

  • explicit_defaults_for_timestamp 启用后,插入NULL列 现在 TIMESTAMP NOT NULL会产生错误(就像其他NOT NULL 数据类型一样),而不是插入当前时间戳。(漏洞 #68472,漏洞 #16394472)

  • SQL_CALC_FOUND_ROWS结合处理 和ORDER BY可能 LIMIT会导致 的结果不正确 FOUND_ROWS()。(漏洞 #68458,漏洞 #16383173)

  • 如果为结果集中的一行返回 INET6_NTOA()或 ,则后面的行也返回。(漏洞 #68454,漏洞 #16373973)INET6_ATON()NULLNULL

  • 具有聚合的、非分组的外部查询和SELECT 列表中的聚合的、非分组的子查询的语句可能返回不正确的结果。(缺陷 #68372,缺陷 #16325175)

  • 在子查询后添加一个ORDER BY子句 IN可能会导致返回重复的行。(缺陷 #68330,缺陷 #16308085)

  • 如果服务器以 启动 --skip-grant-tables, 则ALTER USER ... PASSWORD EXPIRE导致服务器退出。(缺陷 #68300,​​缺陷 #16295905)

  • -DWITH_SSL=/path/to/openssl 由于选择了不正确 的libcrypto. (缺陷 #68277,缺陷 #16284051)

  • 如果mysql是使用捆绑 libedit库构建的,则该库将构建为静态代码,以避免在运行时链接到不同的动态版本。动态链接可能导致使用不同的、不兼容的版本和分段错误。(缺陷 #68231,缺陷 #16296509)

  • Performance Schema 收集的统计信息中缺少服务器在调用存储引擎时执行的某些表 I/O。(漏洞 #68180,漏洞 #16222630)

  • perl 版本的mysql_install_db 错误处理了一些错误消息。(漏洞 #68118,漏洞 #16197542)

  • 对于小数秒大于六位小数的参数, SEC_TO_TIME()将被截断,而不是应有的四舍五入。(漏洞 #68061,漏洞 #16093024)

  • IN()由于在非调试构建中包含调试代码,子句中 具有许多值的查询速度很慢。(缺陷 #68046,缺陷 #16078212)

    参考资料:另请参阅:Bug #58731、Bug #11765737。

  • ALTER TABLE tbl_name ADD COLUMN col_name TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP0000-00-00 00:00:00如果更改是就地完成而不是通过制作表副本,则插入 而不是当前时间戳。(漏洞 #68040,漏洞 #16076089)

  • mysqld_safe使用不可移植的 -e测试结构。(缺陷 #67976,缺陷 #16046140)

  • 非空间索引仅支持空间列的精确匹配查找,但优化器 range在某些情况下错误地使用了访问,从而导致了错误的结果。(缺陷 #67889,缺陷 #15993693)

  • 对于EXPLAIN DELETEEXPLAIN UPDATEpossible_keys列出了所有索引,而不仅仅是适用的索引。(缺陷 #67830,缺陷 #15972078)

  • WITH_LIBWRAP如果配置为启用 ,则 MySQL 无法构建 。(缺陷 #67018,缺陷 #16342793)

  • CMake没有检查系统是否 zlib有MySQL需要的某些功能,导致构建错误。现在它检查并回退到捆绑zlib的功能是否丢失。(缺陷 #65856,缺陷 #14300733)

  • 如果转储文件包含在具有不同字符集和排序规则的视图上定义的具有一个字符集和排序规则的视图,则尝试恢复转储文件会失败,并出现 非法混合排序规则错误。(缺陷 #65382,缺陷 #14117025)

  • 如果服务器在没有 --datadir选项 的情况下启动,则 系统变量SHOW VARIABLES可能显示空值。datadir(缺陷 #60995,缺陷 #12546953)

  • 对于调试版本,一些带有SELECT ... FROM DUAL嵌套子查询的查询引发了断言。(漏洞 #60305,漏洞 #11827369)

  • 和 命令选项现在在运行时作为 和 --log-slow-admin-statements 系统 变量公开。可以使用 来检查它们的值 。变量是动态的,因此它们的值可以在运行时设置。(这些选项实际上系统变量替换了,但由于系统变量可以在服务器启动时设置,因此不会丢失任何选项功能。)(错误 #59860,错误 #11766693)--log-slow-slave-statementslog_slow_admin_statementslog_slow_slave_statementsSHOW VARIABLES

  • UNION ALLBLOB列上可能会产生不正确的结果。(错误#50136,错误#11758009)

  • 在处理内存不足错误时可能会出现内存不足情况,从而导致错误处理中的递归。(错误#49514,错误#11757464)

  • REPLACE()当用户变量作为参数提供并且在多行上执行操作时, 该函数产生不正确的结果。(缺陷 #49271,缺陷 #11757250)

  • UNION类型转换可能会错误地将无符号值转换为有符号值。(缺陷 #49003,缺陷 #11757005)

  • 设置max_connections为小于当前打开连接数的值会导致服务器退出。(缺陷 #44100,缺陷 #11752803)

  • 优化器对某些不适用此访问方法的查询使用松散索引扫描。(错误#42785,错误#11751794)

  • 在低内存条件下查看访问可能会引发调试断言。(缺陷 #39307,缺陷 #11749556)