Documentation Home
MySQL 5.6 发行说明  /  MySQL 5.6.24 的变化(2015-04-06,全面上市)

MySQL 5.6.24 的变化(2015-04-06,全面上市)

弃用和移除说明

  • ALTER TABLETIME如果表中包含的时间列被发现采用 5.6.4 之前的格式( 、 DATETIMETIMESTAMP不支持小数秒精度的列),则没有利用可能适用于要执行的操作的快速更改。相反,它通过重建来升级表。两个新的系统变量可以控制升级此类列并提供有关它们的信息:

    • avoid_temporal_upgrade控制是否 ALTER TABLE隐式升级发现采用 5.6.4 之前格式的时间列。默认情况下禁用此变量。启用它会导致 ALTER TABLE不重建时间列,从而能够利用可能的快速更改。

    • show_old_temporals控制 SHOW CREATE TABLE输出是否包括注释,以标记被发现为 pre-5.6.4 格式的时间列。COLUMN_TYPE表列的 输出 INFORMATION_SCHEMA.COLUMNS 受到类似的影响。默认情况下禁用此变量。

    这两个变量都已弃用,并将在未来的 MySQL 版本中删除。(错误#72997,错误#18985760)

MySQL 企业笔记

  • MySQL Enterprise Edition 现在包括 MySQL Enterprise Firewall,这是一个应用程序级防火墙,使数据库管理员能够根据与接受的语句模式白名单的匹配来允许或拒绝 SQL 语句的执行。这有助于加强 MySQL 服务器抵御 SQL 注入等攻击,或试图通过在合法查询工作负载特征之外使用它们来利用应用程序。

    在防火墙上注册的每个 MySQL 帐户都有自己的语句白名单,从而可以为每个帐户量身定制保护。对于给定的帐户,防火墙可以在记录或保护模式下运行,以接受可接受的语句模式的培训或防止不可接受的语句。有关详细信息,请参阅 MySQL 企业防火墙

添加或更改的功能

  • CMake支持已更新以处理 CMake版本 3.1。(缺陷号 20344207)

  • 服务器现在在将初始“开始消息 写入错误日志时包括其版本号,以便更容易判断错误日志输出适用于哪个服务器实例。version该值与系统变量中可用的值相同 。(缺陷 #74917,缺陷 #20052694)

  • Performance Schema 以前完成的语句摘要现在在 SQL 级别完成,而不管 Performance Schema 是否已编译并可用于服务器操作的其他方面,这些方面可能会从中受益。可用于摘要的默认空间为 1024 字节,但可以在服务器启动时使用 max_digest_length系统变量进行更改。

    参考资料:另请参阅:Bug #18304086、Bug #20015246。

修正错误

  • InnoDB:对临时表 的TRUNCATE TABLE操作引发了断言。从 重新加载时,临时表对象未完全构建 SYS_TABLES。(缺陷 #20527363,缺陷 #72080)

  • InnoDB: 全文短语搜索返回了错误的结果。标记新插入的行时错误处理了空字符串。(缺陷 #20465273,缺陷 #75755)

  • InnoDB: 优化FULLTEXT索引引发了断言。FULLTEXT索引 的最后一个优化词 定义为 CHAR(50)CONFIGvalue当最后优化的单词长度超过 50 个字符时,会引发断言。从CONFIGvalue 列定义为 CHAR(200)。

    如果您的 innodb_ft_max_token_size 设置大于 50,建议您InnoDB FULLTEXT 在升级到 MySQL 5.6.24 或 MySQL 5.7.6 后重新创建现有索引以避免此问题。FULLTEXT升级到 MySQL 5.6.24 或 MySQL 5.7.6 后创建的索引不受影响。(缺陷号 20418326)

  • InnoDB: 一个InnoDB memcached extra_col_value[]数组在没有检查分配标志的情况下被释放,导致服务器退出。(缺陷号 20400373)

  • InnoDB: 在刷新操作正在进行时执行的 DML 操作引发了与 memcached 相关的断言。(缺陷号 20390277)

  • InnoDB: memcached提出 process_arithmetic_command了一个断言。decr为不存在的密钥返回了错误的错误代码 (缺陷号 20386835)

  • InnoDB:忽略了使用memcachedexptime命令定义 的过期时间 (memcached将过期时间设置为一个间隔值而不是系统时间值。(缺陷 #20381342,缺陷 #70055) setInnoDB

  • InnoDB: 当全文搜索 fts_savepoint_release()功能释放命名事务保存点和所有后续保存点时,引发了断言。只应释放初始保存点。(缺陷号 20341916)

  • InnoDB: 全文搜索优化操作提出了断言。(缺陷号 20281800)

  • InnoDB: 由于 MySQL 5.6.20 中引入的回归,当memcached插件处于活动状态时, mysqld 停止不会停止mysqld服务器进程(缺陷 #20078646,缺陷 #74956)InnoDB

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

  • InnoDB:具有索引的表上 的ALTER TABLE ... RENAME故障 FULLTEXT引发了断言。(缺陷号 20043707)

  • InnoDB:ALTER TABLE将具有 UTF-8 字符集的表转换为 ROW_FORMAT=REDUNDANT. (错误#19843246、错误#19895661、错误#20219871)

  • InnoDB: 创建虚拟表时, 不必要地创建autoinc_mutex了对象的成员 dict_table_t同样,为虚拟索引不必要地创建zip_pad.mutex 对象的dict_index_t为了避免不必要的互斥争用,autoinc_mutex对象 zip_pad.mutex现在在第一次锁定尝试时分配和初始化。(缺陷 #19788198,缺陷 #73361)

  • InnoDB: 一个ALTER TABLE ... RENAME操作引发了一个无效的断言。断言代码使用了不正确的事务对象。(漏洞 #18523599)

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

  • InnoDB:列上 的内存缓存 append 操作INT导致分段错误。append不支持对 INT列的操作,现在已被阻止。(缺陷 #75200,缺陷 #20209756)

  • 分区:ALTER TABLE 当写锁对该表有效时, 许多试图向分区表添加分区、列或索引的(错误#74451、错误#74478、错误#74491、错误#74560、错误#74746、错误#74841、错误#74860、错误#74869、错误#19856162、错误#19864284、错误#19873019、错误#19891663、错误#19990815,错误#20026661,错误#20031966,错误#20033503,错误#19827845)

  • 复制: 当从 MySQL 5.7.6 或更高版本的服务器复制到 MySQL 5.6.23 或更早版本的服务器时,如果旧版本的应用程序线程遇到Anonymous_gtid_log_event它会导致断言。该修复确保 MySQL 5.7.6 及更高版本中添加的这些新日志事件不会导致 MySQL 5.6.24 及更高版本的从站出现此问题。如果 gtid_modeOFF并且应用程序线程遇到一个 Gtid_log_event,则应用程序线程会因错误而中止。如果gtid_modeON并且应用程序线程遇到一个 Anonymous_gtid_log_event,则应用程序线程会因错误而中止。(缺陷号 20436436)

  • 复制: 设置 automatic_sp_privileges 变量后,服务器会自动向存储例程的创建者授予 EXECUTEALTER ROUTINE权限(如果用户还没有这些权限)。当特权用户以非特权用户身份在 master 上创建过程时DEFINER,当前用户将被视为特权用户,并且mysql.procs_priv不会更新表。当这样的语句被复制到 slave 时,非特权DEFINER被认为是从站上的当前用户,并且正在分配特权。这导致分配给主服务器和从服务器的特权不同。该修复程序确保将存储例程的创建者添加到二进制日志中,并且从属现在在授予权限之前首先检查用户是否存在。为了保持与以前版本的兼容性,在不可DEFINER用时 使用。INVOKER作为此修复的一部分,匿名用户可用于从主服务器复制到从服务器。(缺陷号 20049894)

  • 复制: 当使用配置为使用 UTF-16、UTF-32 或 UCS-2 等特殊字符集的从站时,接收方 (I/O) 线程无法连接。该修复确保在这种情况下,如果不支持从站的字符集,则默认使用该latin1字符集。(漏洞 #19855907)

  • 复制: 二进制日志组提交的内部问题导致与threadpool插件不兼容。(漏洞 #18845301)

  • 复制:gtid_mode=ONslave_net_timeout设置为低值时,从 I/O 线程可能会挂起。这是因为当转储线程发现许多可以跳过的事件时,从属心跳没有足够定期地发送。该修复可确保在这种情况下正确发送心跳。(错误#74607,错误#19975697)

  • CMake未能正确检测最新版本的 OpenSSL 的 OpenSSL 版本(版本字符串的格式已更改)。(缺陷号 20756770)

  • 对于准备好的语句的执行,没有检查审计日志插件是否返回错误,因此可能会错误地返回语句成功。(缺陷号 20567900)

  • Debian 软件包缺少一些依赖项。(缺陷号 20561621)

  • 在执行 GRANT ... WITH GRANT OPTION语句之后,执行带有视图的准备好的语句可能会导致服务器退出。(缺陷号 20030284)

  • 名为 的用户可以在没有权限的event_scheduler情况下查看事件计划程序进程列表 。PROCESS(错误#20007583,错误#20754369)

  • 从表中删除列后尝试创建用户 mysql.user可能会导致服务器退出。(漏洞 #19910140)

  • 按结果排序GROUP_CONCAT() 可能会导致服务器退出。(错误#19880368,错误#20730220)

  • 格式错误的mysql.proc表行可能导致与该行DROP DATABASE关联的数据库 的服务器退出。proc(漏洞 #19875331)

  • SHOW GRANTS使用代理用户连接后可以显示代理用户的密码哈希。(漏洞#19817663)

  • 较大的 transaction_prealloc_size 系统变量值可能会导致服务器分配过多的内存。最大值已向下调整为 128K。对 进行了类似的更改 transaction_alloc_block_size。如有必要,事务仍然可以分配超过 128K;此更改减少了可以预分配的数量,以及增量分配块的最大大小。(漏洞 #19770858,漏洞 #20730053)

  • 表上的某些查询 INFORMATION_SCHEMA.INNODB_FT_CONFIG可能会导致服务器退出。(漏洞 #19703520)

  • <=>对于使用运算符比较两行并且这些行属于不同字符集 的查询,可能会发生服务器退出。(错误#19699237,错误#20730155)

  • 某些InnoDB错误导致存储函数和触发条件处理程序被忽略。(错误#19683834,错误#20094067)

  • 由于错误地将不正确的字段与临时表相关联,优化器可能会引发断言。(错误#19612819,错误#20730129)

  • 审核日志过滤未应用于连接事件。(漏洞 #19509398)

  • 使用 audit_log_connection_policy=ERRORS,成功COM_QUIT的事件被错误地写入审计日志。对于 audit_log_statement_policy=NONE,无论当前 audit_log_connection_policy 设置如何,都不会将连接事件写入审核日志。(漏洞 #19509373,漏洞 #21027210)

  • 状态变量的值 Audit_log_events不等于其他审计日志计数器的总和。(漏洞 #19509336)

  • 过滤审计日志事件时,Audit_log_events_filtered 状态变量不会增加。(漏洞 #19509263)

  • MySQL 5.6.20 中审计日志插件增加了很多新特性,但版本号并没有增加。版本已升至 1.1。(漏洞 #19502900)

  • 由于优化器未能分配足够的内存来解析外部引用,服务器可能会退出。(错误#18782905,错误#19892803)

  • 如果在服务器启动时发现审计日志文件已损坏,则不会始终写入适当的错误消息。此外,如果插件已加载,则无论日志是否已损坏,都会对其进行初始化,重命名日志文件失败的情况除外。(漏洞 #14584292)

  • 使用 子句 创建FEDERATED包含列的表 会导致服务器退出。(漏洞 #12671631)AUTO_INCREMENTLIKE

  • 对一些代码问题进行了更正,这些问题导致编译器警告数组边界、可能未初始化的变量以及设置但未使用的变量。(错误#75735,错误#20458574)

  • NULL作为表达式未被识别为用于计算性能模式语句摘要的文字。(错误#74813,错误#20015246)

  • 系统group_concat_max_len变量可以在运行时设置为其最大值,但不能在选项文件中设置。(错误#74037,错误#19670915)

  • 服务器警告错误消息引用了过时的 table_cache系统变量而不是 table_open_cache。感谢 Daniël van Eeden 提供修复某些实例的补丁。(错误#73373、错误#19285052、错误#75081、错误#20135780)

  • DIGEST_TEXTPerformance Schema 语句事件表的列中,对表单系统变量的引用 存储为. (错误#71634,错误#18304086)@@var_name@ @ var_name

  • 如果使用不正确的 SSL 安装路径或不受支持(太旧)的 SSL 安装路径指定 CMake选项,则该选项将隐式更改为该值,并改用 yaSSL。现在 CMake以错误退出,因此用户知道必须更改选项值。(缺陷 #69744,缺陷 #17162055)WITH_SSL bundled

  • mysql_real_connect()如果服务器没有运行,可以关闭一个文件描述符两次。(漏洞 #69423,漏洞 #19226740)

  • 仅当启用了通用查询日志时,审计日志插件才会收到通用日志的事件通知。现在,无论是否启用常规查询日志,都会发布通知。(错误#60782、错误#12368204、错误#20536590、错误#75796、错误#20479643)