Documentation Home
MySQL 5.6 发行说明  /  MySQL 5.6.15 的变化(2013-12-03,全面上市)

MySQL 5.6.15 的变化(2013-12-03,全面上市)

此版本的已知限制:

笔记

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

包装说明

  • 以前,MySQL 服务器发行版包括 Info 格式的 MySQL 参考手册(Docs/mysql.info 文件)。由于该手册的许可证限制了再分发,因此将其包含在社区包中会给下游再分发者带来问题,例如那些创建 Linux 发行版的人。MySQL Server 的社区发行版不再包含 mysql.info 文件,以简化重新打包和重新分发过程(例如,可以直接使用源代码压缩包及其校验和)。此更改适用于所有源代码和二进制社区打包格式。商业(企业)发行版没有变化。

    对于那些希望继续使用 Info 格式的 MySQL 参考手册的人,我们已经在 https://mysql.net.cn/doc/上提供了它。

添加或更改的功能

  • Incompatible Change:setup_instruments在确切的语句类型未知之前,Performance Schema 在语句分类的早期阶段使用 了表中的几个语句工具 这些工具被重新命名以更清楚地反映它们的 抽象性质:

    旧仪器名称 新仪器名称
    statement/com/ statement/abstract/new_packet
    statement/com/Query statement/abstract/Query
    statement/rpl/relay_log statement/abstract/relay_log

    此外,下表中不再收集抽象工具的统计数据,因为此类工具从未用作声明的最终分类:

    events_statements_summary_by_thread_by_event_name
    events_statements_summary_by_account_by_event_name
    events_statements_summary_by_user_by_event_name
    events_statements_summary_by_host_by_event_name
    events_statements_summary_global_by_event_name

    引用旧仪器名称的应用程序必须更新为新名称。有关在语句分类中使用抽象工具的更多信息,请参阅 性能模式语句事件表。(错误#16750433,错误#17271055)

  • Performance Schema 现在检测读/写锁 Delegate::lock,用于以下类:

    Trans_delegate
    Binlog_storage_delegate
    Binlog_transmit_delegate
    Binlog_relay_IO_delegate

    每个子类使用不同的仪器名称,以针对不同的用途使用不同的统计数据。这些工具在schema.setup_instruments表中可见,并具有以下名称:

    wait/synch/rwlock/sql/Trans_delegate::lock
    wait/synch/rwlock/sql/Binlog_storage_delegate::lock
    wait/synch/rwlock/sql/Binlog_transmit_delegate::lock
    wait/synch/rwlock/sql/Binlog_relay_IO_delegate::lock

    (错误#17590161,错误#70577)

  • 一个新的CMake选项, WITH_ASAN允许为支持它的编译器启用 AddressSanitizer。(漏洞 #17435338)

  • 修改了用于元数据锁定的散列函数以减少开销。(漏洞 #68487,漏洞 #16396598)

修正错误

  • 创新数据库;复制: mecachedInnoDB 插件会在插入到二进制日志之前更新一条记录,这会导致从属服务器复制停止。插入应该发生在更新之前。(漏洞 #17358875)

  • InnoDB: Bug#17371537 的修复引入的回归导致memcached插入操作的内存泄漏。(漏洞 #17738935)

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

  • InnoDB: 在日志中发现的容错代码应用代码 InnoDB ALTER TABLE ... IN PLACE可能会导致数据损坏。(错误#17625063,错误#17512497)

  • InnoDB:trx->error_key_num字段未在中找到的错误注入代码中初始化 storage/innobase/handler/handler0alter.cc。该error_key_num字段通常为 0,但如果重用 DDL 事务对象的内存缓冲区,则可以为非零值。(漏洞#17624926)

  • InnoDB: 以数字开头的数据库名称会导致全文搜索 (FTS) 解析器错误。(漏洞 #17607956)

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

  • InnoDB: 一个ALTER TABLE ... CHANGE [COLUMN]操作会导致一个 rbt_empty(index_cache->words)断言。(漏洞#17536995)

  • InnoDB: CHECK TABLE将忽略该 QUICK选项。(漏洞 #17513737)

  • InnoDB: 查询时会消耗过多的内存 INFORMATION_SCHEMA.INNODB_FT_INDEX_TABLE。非常大的全文搜索索引会出现此问题。(错误#17483582,错误#70329)

  • InnoDB:SHOW ENGINE INNODB STATUS在一个连接线程上 运行KILL CONNECTION 来自不同连接线程的语句来终止该线程将导致严重错误。(漏洞#17474166)

  • InnoDB:ibuf_contract_ext在调试版本中,由于执行合并并将 dict_stats_update被逐出的页面返回到缓冲池而 ibuf_change_buffering_debug启用 ,因此会发生测试用例失败 (漏洞 #17446090)

  • InnoDB:在某些操作系统上将O_DIRECT文件 设置为tmpfs在上创建多个临时表tmpfs会导致重复打印错误。错误消息已更改为 CREATE TABLE多次运行时仅打印一次的警告。(漏洞 #17441867)

  • InnoDB: InnoDB在丢弃表空间后尝试运行查询时未能返回错误。(漏洞 #17431533)

  • InnoDB: 丢弃表空间后会发生严重错误。(错误号 17430207)

  • InnoDB: 计数器 未在 . 此补丁还引入了新的计数器(和 ) 计数器 重命名 以区别于计数器。(错误#17409657,错误#70241)information_schema.innodb_metrics index_mergebtr0btr.ccindex_page_reorg_attemptsindex_page_reorg_successfulindex_page_discardsindex_mergesindex_page_merge_attemptsindex_page_merge_successful

  • InnoDB:TRUNCATE TABLE 操作期间, InnoDB:尝试截断表的缺失索引...警告将打印到错误日志中。当索引是全文搜索 (FTS) 索引时,不应打印这些警告。(错误#17402002,错误#70226)

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

  • InnoDB: 在并行全文搜索 (FTS) 索引创建期间,扫描器线程读取文档并将它们传递给分词器。标记化完成后,标记器从内存中释放文档。当对包含大量文本的文档进行分词时,分词器线程无法跟上扫描器线程的步伐。结果,内存的释放速度不够快,标记化待处理列表的大小将会增加。(漏洞 #17384979)

  • InnoDB: trx_create并且trx_free 会为每个memcached get请求调用。(错误#17371537,错误#70172)

  • InnoDB:查询字符串中包含无效字符 的全文搜索 (FTS)BOOLEAN MODE查询可能会导致内存访问冲突失败。(漏洞 #17350055)

  • InnoDB: 由于临时表空间不足,在大表上创建全文索引失败,并导致误导性的 不正确的密钥文件错误。(漏洞 #17339606)

  • InnoDB: 其中btr_validate_level有检查以确保所有 B 树页面在分配时都被标记。更改缓冲区的检查失败,因为更改缓冲区页面的分配处理方式与其他 B 树页面不同。(漏洞#16884217)

  • InnoDB:变量 的硬编码大小srv_max_n_threads 不足。现在根据连接线程和 InnoDB后台线程的最大数量配置变量设置。(漏洞 #16884077)

  • InnoDB:SELECT COUNT(*)与操作同时运行时,查询将花费很长时间才能完成 LOAD DATA。该 mtr_memo_contains函数确定一个对象是否是迷你事务中备忘录的一部分,它包含一个嵌套循环,导致查询运行缓慢。(漏洞 #16764240,漏洞 #69141)

  • InnoDB: 启用更改缓冲区InnoDB 时,如果插入是作为就地更新执行的,则在将记录从插入缓冲区合并到二级索引页面时无法写入事务日志记录。(漏洞 #16752251,漏洞 #69122)

  • InnoDB:ALTER TABLE ADD FULLTEXT由于全文缓存不同步, 现有的全文索引运行后会失效 (错误#16662990,错误#17373659)

  • InnoDB: 由于 MySQL 5.6 中的回归,创建或删除innodb_force_recovery设置为3 (SRV_FORCE_NO_TRX_UNDO) 的表失败。此外,此错误修复包括代码修改, 设置为大于 ()InnoDB时设置为只读 (错误#16631778,错误#69892)innodb_force_recovery3SRV_FORCE_NO_TRX_UNDO

  • InnoDB: 内存InnoDB 缓存 配置错误消息包含不正确的文件名。错误消息指出,请通过运行 innodb_config.sql 在数据库 innodb_memcache 中创建配置表容器。错误 31。正确的文件名是innodb_memcached_config.sql. 此外,错误消息的 error 31部分已被翻译成对应的文本,即找不到表。(错误#16498810,错误#68684)

  • InnoDB:mutex_spin_wait()中,该 sync_array_reserve_cell函数可能无法在具有较小同步等待数组的系统上找到空槽,从而导致错误。(漏洞#16245498)

  • InnoDB: 在尝试回滚到保存点时,不会设置全文搜索 (FTS) 索引保存点信息,导致出现严重错误。(漏洞 #14639605,漏洞 #17456092)

  • InnoDB:index_read_map调用精确搜索时,由于搜索条件不匹配而无法返回记录时,光标将定位到搜索到的键之后的下一条记录。随后调用index_next 将返回下一条记录,而不是返回前一个不匹配的行,从而跳过一条记录。(错误#14621190、错误#15965874、错误#17314241、错误#70038、错误#17413093、错误#12860669、错误#60220、错误#17565888)

  • InnoDB:innodb_force_recovery隐式回滚导致服务器在以 3 或更大的值 重新启动时停止此错误已通过修复错误 #16310467 和错误 #17253499 的组合得到解决。(漏洞 #14178835)

    参考资料:另请参阅:Bug #16310467、Bug #17253499。

  • InnoDB: 将列数较多的表从 MyISAM转换为 InnoDB会因日志缓冲区空间不足而引发断言。InnoDB如果重做日志大小太大,现在会尝试自动增加日志缓冲区大小,而不是断言 (缺陷 #11758196,缺陷 #50366)

  • 分区: 分区重建期间存储引擎设置不正确;表存储引擎被忽略,而是使用默认存储引擎。因此,在 MySQL 5.1 中,可以REBUILD PARTITION将分区存储引擎从 更改InnoDB为 MySQL 5.5 及更高版本中MyISAM可以进行相反的操作(重建MyISAM表的分区导致分区使用InnoDB现在,当重建分区时,表实际使用的存储引擎由重建操作的处理程序检查和使用,这样分区存储引擎就不会被无意中更改。(漏洞 #17559867)

  • 分区: 在使用 禁用父表的索引后 ALTER TABLE ... DISABLE KEYS,重建其任何分区都会启用这些分区上的索引, MyISAM当优化器尝试使用受影响的索引之一时会导致失败并出现错误。

    现在在这种情况下,我们会在重建任何分区之前检查表上是否有禁用的索引。如果索引已被禁用,那么我们将在重建后的分区上禁用它们。(漏洞 #16051817)

  • 复制: 复制主服务器没有正确处理主服务器和从服务器上半同步插件的禁用,随后停止了从服务器。(错误#17460821,错误#70349)

  • 复制:SET语句子句中 的最后一个参数在LOAD DATA ... SET二进制日志中重复。(错误#17429677,错误#70277)

  • 复制: 当转储线程在从活动二进制日志文件中读取事件时遇到的错误是临时错误,因此转储线程尝试读取事件时,转储线程可能会寻找错误的位置,这可能导致一个或多个事件被重新发送。为了防止这种情况,线程的位置是在每次正确读取事件后获得的。

    此外,通过此修复,只有未正常关闭的二进制日志才会被标记为可能已损坏。

    最后,添加两个警告;当转储线程遇到临时错误时,这些现在会返回。(漏洞 #17402313)

  • 复制:rpl_semi_sync_master_enabled 在主服务器等待从服务器回复时 设置 (错误#17327454,错误#70045)

  • 复制: 当停止 I/O 线程时,可能有一个非常大的事务(相当于一个大于 100MB 的二进制日志大小)线程没有收到事务到最后。当重新连接时MASTER_AUTO_POSITION=1,然后尝试从下一个交易中获取更改,这可能会导致不完整的交易及其数据丢失。(错误#17280176,错误#69943)

  • 复制: 尝试设置 CHANGE MASTER TO ... MASTER_AUTO_POSITION = 0失败,错误 1777 (ER_AUTO_POSITION_REQUIRES_GTID_MODE_ON)。(漏洞#17277744)

  • Replication:LAST_INSERT_ID()在从站上使用过滤规则时,未正确复制 值(漏洞 #17234370,漏洞 #69861)

  • 复制: 用于存储 GTID 值的内部函数有时会尝试将它们作为错误长度的字符串进行处理。(错误#17032712,错误#69618)

  • 复制:binlog_row_image设置为 MINIMAL,仅更新具有 9 个或更多列的表的某些列会导致 mysqlbinlog在与该 --verbose选项一起使用时失败。(漏洞 #16960133)

  • 复制: 发出GRANT带有无效参数的语句导致主服务器将 LOST_EVENTS事件写入其二进制日志,从而导致复制停止。现在这样的情况下,如果一个或多个权限的授予或撤销成功,一个事件就会被写入日志;否则,只会记录警告。(错误#16629195,错误#68892)

  • libmysqlclient版本 18 文件已从 RPM 包中删除,以避免和 RPM 包MySQL-shared-compat之间发生冲突。(漏洞#17749617)MySQL-sharedMySQL-shared-compat

  • 启用索引合并优化器开关并设置较小的 sort_buffer_size值可能会导致服务器退出。(漏洞 #17617945)

  • Windows MSI 包中缺少一些许可证和文档文件。(漏洞 #17584523)

  • 半连接具体化策略未用于 VARCHAR长度超过 512 字节的列,导致使用效率较低的策略和较差的查询性能。(字符数而非字节数的限制取决于列字符集; utf8例如 170 个字符。)(缺陷 #17566396)

  • 在 Windows 上使用 MySQL Installer 安装 MySQL,然后使用 Control Panel 中的 Uninstall a Program 卸载 MySQL,导致 MySQL 服务条目没有被删除。(漏洞 #17550741)

  • session_connect_attrs在高负载下 从 Performance Schema 表中进行选择 可能会导致服务器退出。(漏洞 #17542370)

  • Visual Studio 2012 下的编译失败已得到纠正。(错误号 17430236)

  • 如果SET PASSWORD用于已从 mysql.user表中手动删除但仍存在于内存中的帐户,则会引发断言。(漏洞 #17359329)

  • CLIENT_CONNECT_WITH_DB标志在 C 客户端库中处理不当。这可能导致发送到服务器的格式错误的数据包。(漏洞 #17351732)

  • filesort实现有时无法分配足够的缓冲区空间,从而导致服务器退出。(漏洞 #17326567)

  • 如果使用该选项mysql_options()调用多次,C API 函数可能会泄漏内存 。MYSQL_SET_CLIENT_IP(漏洞 #17297012)

  • CONV()函数可以调用 abs(INT_MIN)未定义的 ,并导致服务器退出。(漏洞#17296644)

  • SSL 代码中的错误数组缺少一个逗号,导致相邻消息的隐式连接以及错误编号和消息之间的关系中产生的差一错误。(漏洞 #17294150)

  • GRANT即使对于现有用户,没有 IDENTIFIED BY子句也会导致错误。(漏洞#16938568)

  • GROUP_CONCAT()使用无效的分隔符可能会导致服务器退出。(漏洞 #16870783)

  • 内部InnoDB字符串例程可以写入超过缓冲区的末尾。(漏洞#16765410)

  • 对于卸载操作,如果服务器正在运行,则 MySQL Server MSI 安装程序无法删除某些文件。这可能会导致后续安装较低版本的 MySQL 时出现问题:安装程序报告操作成功,但并非原始安装中的某些文件未被其较低版本的对应文件替换。(漏洞 #16685125)

  • GIS 交集相关代码缺少返回值检查,导致非调试构建中出现循环并在调试构建中引发断言。(漏洞 #16659166)

  • 使用二进制客户端/服务器协议,为子句中带有参数的查询准备好的语句的第二次执行 LIMIT引发了断言。(漏洞 #16346241)

  • 对于使用 Windows MSI 软件包安装程序的升级,升级对话框消息缺少 版本。(漏洞 #16053094)

  • 查询中的非常长的数据库名称可能会导致服务器退出。(错误#15912213,错误#16900358)

  • 独立的 Windows MSI 包没有 ALLUSERS属性集。他们现在设置 ALLUSERS=1。对于本 MySQL 系列中较早的 MSI 包,解决方法是使用以下命令:

    C:\> msiexec /i msi_installer_name ALLUSERS=1

    (漏洞 #14647206)

  • 作为 XPath 表达式参数调用的函数的递归处理不正确,有时会导致此类表达式失败。(漏洞 #14040071)

  • .pdbWindows Zip 存档分发中丢失了 一些文件。(漏洞 #13878021)

  • Coverity 静态分析工具发现的几个问题已得到修复。感谢 Jan Staněk 和 Honza Horak 提供的补丁。(错误#70591,错误#17590095)

  • 启动时的设置host_cache_size没有效果。(错误#70552,错误#17576516)

  • MySQL 无法在 OS X 10.9 (Mavericks) 上编译。(错误#70542,错误#17647863)

  • 在某些情况下,在列前缀上定义的索引的范围条件返回不完整的结果集。(例如 ,其中索引 on仅索引前 6 个字符。)(错误 #70341,错误 #17458273)SELECT ... WHERE 'abcdef1' < col_name AND col_name < 'abcdef9'col_name

  • InnoDB全文搜索无法在包含保存点的事务中找到记录。(错误#70333,错误#17458835)

  • 如果要求升级在未 InnoDB启用的情况下运行的服务器, mysql_upgrade 会发出关于表不存在的投诉 (除非可用InnoDB,否则表将不存在)。InnoDB(错误#70152,错误#17361912)

  • 启用线程池插件 后, Performance Schema 表的PROCESSLIST_USERPROCESSLIST_HOST列 始终用于客户端会话。此外,对于主线程,这些列未 设置为用户帐户。 threadsNULLNULL

    笔记

    作为错误修复实现的一部分,线程池插件的性能模式检测已更改为使用 thread_pool,而不是sql.

    (错误#70028、错误#17310065、错误#17049691)

  • 对于频繁的连接/断开操作,降低了性能模式检测开销。(错误#70018,错误#17310878)

  • COUNT(DISTINCT)不应该计算 NULL值,但是当优化器使用松散索引扫描时它们被计算在内。(漏洞 #69841,漏洞 #17222452)

  • 在调试版本中,静态初始化代码可以在 DBUG 子系统初始化之前调用 DBUG 函数。(缺陷 #69653,缺陷 #17063675)

  • 除非将和 系统变量设置得足够大以允许将用于查询处理的临时表存储在 存储引擎中,否则 某些INSERT INTO ... SELECT ... FROM 语句速度很慢 。(漏洞 #69368,漏洞 #16894092)tmp_table_sizemax_heap_table_sizeMEMORY

  • 释放后一些可能的内存使用情况已得到修复。感谢 Jan Staněk 提供的补丁。(缺陷 #68918,缺陷 #16725945)

  • 丢失va_end()的呼叫已添加到日志记录和 UCS2 代码中。感谢 Jan Staněk 提供的补丁。(漏洞 #68896,漏洞 #16725769)

  • 对于 form 的查询,可能会更新不正确的行。唯一键允许多个值,但优化器并不总是考虑所有这些值。(错误#68656,错误#16482467)UPDATE ... WHERE unique_key ORDER BY ... LIMIT ...NULL

  • 对于ALTER TABLE重命名或更改列的默认值的语句, BINARY更改是使用表副本完成的,而不是就地。(错误#67141、错误#14735373、错误#69580、错误#17024290)

  • 服务器使用以太网硬件地址生成 UUID,但对以太网设备的名称进行了假设,而不是向系统查询它们的名称。感谢 Honza Horak 提供补丁。(缺陷 #63055,缺陷 #13548252)

  • 授权表中的主机名以小写形式存储,但 mysql_install_db可能无法遵守此约定,导致无法使用 删除帐户 DROP USER。(错误#62255、错误#12917164、错误#62254、错误#12917151)

  • 终止正在执行filesort 操作的查询会导致 ER_SERVER_SHUTDOWN(服务器正在关闭)错误。(错误#18256,错误#11745656)