此版本增加了对 Debian 8 和 Ubuntu 15.04 的支持。
-
该
CREATE USER
语句现在支持一个IF NOT EXISTS
子句,该子句使该语句为每个已存在的命名帐户生成警告,而不是错误。ALTER USER
andDROP USER
语句现在支持一个子句,该IF EXISTS
子句导致语句为每个不存在的命名帐户生成警告,而不是错误。有关详细信息,请参阅 CREATE USER 语句、ALTER USER 语句和 DROP USER 语句。当帐户集在主从之间不同时,这些语句变体在复制场景中很有用。它们还允许编写帐户管理操作脚本,否则这些操作会因语句错误而终止。
-
MySQL 用户名的最大长度已从 16 个字符增加到 32 个字符,这在选择 MySQL 帐户名的用户名部分时提供了更大的灵活性。此更改会影响这些上下文中允许的用户名:
账户管理报表,例如
CREATE USER
、GRANT
、REVOKE
和SHOW GRANTS
。支持
DEFINER
子句的语句,例如CREATE PROCEDURE
andCREATE VIEW
。其他带有包含用户名的子句的语句,例如
CHANGE MASTER TO
andCREATE SERVER
。mysql
在系统数据库、和性能模式表 中存储用户名的列INFORMATION_SCHEMA
已扩大到可容纳 32 个字符。
客户端/服务器协议没有变化,该协议将用户名交换为以 null 结尾的字符串。但是,使用该协议进行通信的第三方程序,如果使用或存储用户名是基于最大16个字符的假设,则可能需要修改。
最大用户名长度的增加对 MySQL 管理有影响:
复制含义:将超过 16 个字符的用户名复制到仅支持较短用户名的从服务器将失败。但是,这应该仅在从较新的主服务器复制到较旧的从服务器时发生,这不是推荐的配置。
降级影响:如果较新的服务器支持任何用户名超过 16 个字符的帐户,则无法降级到仅支持较短名称的旧版本的 MySQL。
如果从早期版本升级到此 MySQL 版本,则必须运行mysql_upgrade(并重新启动服务器)以将此更改合并到用户名长度中。
-
一个新的客户端程序mysqlpump提供了mysqldump的替代方法。其特点包括:
并行处理数据库和数据库中的对象,以加速转储过程
更好地控制转储哪些数据库和数据库对象(表、存储程序、用户帐户)
将用户帐户转储为帐户管理语句 (
CREATE USER
,GRANT
) 而不是插入到mysql
系统数据库 中创建压缩输出的能力
进度指示器(值是估计值)
InnoDB
对于转储文件重新加载,通过在插入行后添加索引 来更快地为表创建二级索引
有关详细信息,请参阅mysqlpump — 数据库备份程序。
mysqlpump和mysqldump 之间有一些显着的区别 :
如果没有选项,mysqlpump 会转储所有内容,而mysqldump什么也不转储。
对于mysqlpump, 默认情况下启用
--routines
和--events
,而对于mysqldump,默认情况下禁用它们。
服务器构建的 Boost 库的最低版本现在是 1.58.0。(错误#76354,错误#20721087)
已完成清理源代码库的工作,包括: 删除不需要的CMake检查;从源文件中删除未使用的宏;重组头文件以减少依赖项的数量并使它们更加模块化,删除没有定义的函数声明,用行业标准库中的等效函数替换本地编写的函数。
systemd 的默认配置现在设置
LimitNOFILE
为 5000 以增加 MySQL 服务器可用的文件描述符的数量。此更改适用于使用 RPM 包执行 MySQL 安装的 Linux 系统。在此类系统上,可用的描述符数量通常由操作系统设置为 1024。此更改会导致描述符数量与open_files_limit
系统变量默认值 5000 相匹配。要配置不同数量的描述符,请LimitNOFILE
按照管理 MySQL中的说明进行设置服务器与 systemd。(缺陷号 21073014)嵌入式服务器从CMake选项 中获取
libmysqld
默认secure_file_priv
值 ,但不能与非嵌入式服务器共享同一目录。新 选项允许为 . 默认值为 。(缺陷号 20770671)INSTALL_SECURE_FILE_PRIVDIR
INSTALL_SECURE_FILE_PRIV_EMBEDDEDDIR
libmysqld
NULL
复制: 状态变量
Rpl_semi_sync_master_net_wait_time
和Rpl_semi_sync_master_net_avg_wait_time
始终0
在 MySQL 5.7.4 及更高版本中。这些变量现在已弃用,并将在未来的 MySQL 版本中删除。(错误#72627,错误#18750614)
优化器现在能够在生成的列上使用索引,即使查询不直接通过名称引用此类列也是如此。优化器识别与生成列的定义相匹配的查询表达式,并在查询执行期间适当地使用来自这些列的索引。有关详细信息,请参阅 优化器使用生成的列索引。
-
优化器成本模型
memory_block_read_cost
在表中有一个新参数,mysql.engine_cost
表示从内存数据库缓冲区读取索引或数据块的成本。与
io_block_read_cost
表示从磁盘读取块的成本的现有参数一起,此更改使数据访问方法的成本模型能够考虑从不同来源读取信息的成本;也就是说,从磁盘读取信息与读取内存缓冲区中已有信息的成本。对于初始实现,默认值memory_block_read_cost
与 相同io_block_read_cost
。调整这些值仍然是未来的工作,尽管您可以更改这些值以查看这对查询性能有何影响。有关详细信息,请参阅 优化器成本模型。如果从早期版本升级到此 MySQL 版本,则必须运行mysql_upgrade(并重新启动服务器)以将此更改合并到
mysql
系统数据库中。 -
MySQL 5.7.7 中引入的优化器提示功能已扩展到子查询执行策略。子查询提示会影响是否使用半连接转换以及允许使用哪种半连接策略,并且在不使用半连接时,是否使用子查询实现或
IN
-to-EXISTS
转换。例子:SELECT /*+ SEMIJOIN(FIRSTMATCH, LOOSESCAN) */ * FROM t1 ...; SELECT id, a IN (SELECT /*+ SUBQUERY(MATERIALIZATION) */ a FROM t1) FROM t2; SELECT * FROM t2 WHERE t2.a IN (SELECT /*+ SUBQUERY(INTOEXISTS) */ a FROM t1);
有关详细信息,请参阅 子查询优化器提示。
系统变量 还有一个新
duplicateweedout
标志 。optimizer_switch
此标志允许使用optimizer_switch
来指定是否使用 Duplicate Weedout 半连接策略,这在以前是不可能的。
Microsoft Windows: 对于 Windows,MSI 安装程序包不再包含调试二进制文件/信息组件(包括 PDB 文件)。这些在分别命名 为 64 位和 32 位的 Zip 存档中可用。(漏洞#18296012)
mysql-
VERSION
-winx64-debug-test.zipmysql-
VERSION
-win32-debug-test.zip
-
当前事件计时现在提供更多信息。以前,在执行等待、阶段、语句或事务事件时,相应的表显示事件已
TIMER_START
填充,但带有TIMER_END
和TIMER_WAIT
作为NULL
:events_waits_current events_stages_current events_statements_current events_transactions_current
为了能够确定尚未完成的事件已经运行了多长时间,计时器列现在设置如下:
TIMER_START
已填充(与之前的行为相同)TIMER_END
填充有当前计时器值TIMER_WAIT
填充了到目前为止经过的时间 (TIMER_END
−TIMER_START
)
要查找尚未完成(即没有
END_EVENT_ID
)并且到目前为止花费的时间超过N
皮秒的事件,监控应用程序可以在查询中使用此表达式:WHERE END_EVENT_ID IS NULL AND TIMER_WAIT > N
(错误#75156,错误#20889406)
-
性能模式包含以下更改:
之前的
show_compatibility_56
系统变量默认值ON
已更改为OFF
。需要 5.6 行为的应用程序应将此变量设置为,ON
直到它们已迁移到系统变量和状态变量的新行为。请参阅 迁移到性能模式系统和状态变量表当 Performance Schema 会话变量表产生输出时,它们不包含仅全局变量的行,因此没有完全反映对当前会话有效的所有变量值。这已得到纠正,因此每个表的每个会话变量都有一行,每个没有会话对应项的全局变量都有一行。此更改适用于
session_variables
和session_status
表。不再需要
show_compatibility_56
系统变量OFF
用于 Performance Schema 系统变量表来产生输出。无论变量值如何,这些表现在都会产生输出。此更改适用于global_variables
、session_variables
和variables_by_thread
表。WHERE
在 MySQL 5.7.6 中不推荐使用SHOW VARIABLES
和 的子句 。SHOW STATUS
此限制已取消,因此它WHERE
像 5.7.6 之前一样受到支持。该表现在
metadata_locks
显示表空间锁。这些锁的行的OBJECT_TYPE
值为TABLESPACE
。-
性能模式在这些历史表中记录等待、阶段、语句和事务事件:
events_waits_history events_waits_history_long events_stages_history events_stages_history_long events_statements_history events_statements_history_long events_transactions_history events_transactions_history_long
以前,历史事件日志记录完全通过启用或禁用表中与历史相关的消费者来控制
setup_consumers
。这些标志对于服务器是全局的,结果是为所有线程或没有线程收集历史数据。Performance Schema 现在将历史消费者与
setup_actors
表结合使用,从而可以控制每个主机、用户或帐户(主机和用户的组合)的历史事件收集。该表有一个新HISTORY
列,指示是否收集历史事件(也取决于启用了哪些历史消费者),并且每个新的前台线程都与表中的行匹配。如果找到匹配的行,它的HISTORY
值将记录在threads
表中线程的行中,该表现在也有一个HISTORY
列。为给定会话启用历史事件日志记录可以独立于为其启用检测来完成。因此,您可以更精确地控制在历史表中记录哪些事件,具有以下优点:
当仅一部分检测会话需要历史数据时,运行时开销会减少。
减少历史表中的噪音,有助于对产生大量事件的繁忙服务器进行故障排除。
有关详细信息,请参阅 按线程预过滤、 setup_actors 表和 线程表。
-
该
threads
表现在包含一个CONNECTION_TYPE
指示传输协议的列。它可用于确定连接是如何建立的。允许的值为TCP/IP
(不使用 SSL 建立的 TCP/IP 连接)、(SSL/TLS
使用 SSL 建立的 TCP/IP 连接)、Socket
(Unix 套接字文件连接)、Named Pipe
(Windows 命名管道连接)和Shared Memory
(Windows 共享内存连接)。连接类型信息也被写入新连接的通用查询日志中,并且修改了审计日志界面以合并连接类型。
如果从早期版本升级到此 MySQL 版本,则必须运行mysql_upgrade(并重新启动服务器)以将这些更改合并到
performance_schema
数据库中。参考资料:另请参阅:Bug #76167、Bug #20652173、Bug #20684424、Bug #20811494。
查询重写插件的初始实现使用了自己的 API。此 API 已重新实现以使用审计插件 API。有关详细信息,请参阅 编写审计插件。查询重写插件重新实现的一个效果是减少了开销。
MySQL 服务器插件可以访问服务器 “服务”,如 MySQL 插件服务中所述。MySQL 发行版现在包括演示如何测试插件服务 API 的插件。该
test_framework
插件是一个基本插件,显示了服务测试所需的最低框架。test_services
和test_services_threaded
插件演示了如何在非线程和线程上下文中测试和服务my_snprintf
。my_plugin_log_service
有关详细信息,请参阅 MySQL Server Doxygen 文档,网址为 https://mysql.net.cn/doc/index-other.html。MySQL 发行版现在包括 Version Tokens,该功能可以创建服务器令牌并围绕服务器令牌进行同步,应用程序可以使用这些服务器令牌来防止访问不正确或过时的数据。Version Tokens 基于一个插件库,该插件库实现了一个
version_tokens
插件和一组可加载的函数。有关详细信息,请参阅 版本令牌。-
MySQL 发行版现在提供了一个锁定接口,该接口实现了具有三个属性的锁定:锁定命名空间、锁定名称和锁定模式。通过在不同的命名空间中创建锁,命名空间使不同的应用程序能够使用相同的锁名称而不会发生冲突。可以使用读(共享)或写(独占)模式创建锁。
此锁定接口可在两个级别使用:1) 作为 C 语言接口,可作为插件服务从服务器插件或可加载函数中调用;2) 在 SQL 级别,作为映射到对服务例程的调用的一组可加载函数。有关详细信息,请参阅锁定服务。
锁定服务提供的接口不同于
GET_LOCK()
相关 SQL 函数提供的接口(请参阅锁定函数)。例如,GET_LOCK()
不实现命名空间,只提供独占锁,不提供读写锁。 -
这些更改是针对
Rewriter
查询重写插件进行的(请参阅 The Rewriter Query Rewrite Plugin):现在只有一个安装脚本,
install_rewriter.sql
. 之前有两个安装脚本,install_rewriter.sql
和install_rewriter_with_optional_columns.sql
,区别在于是否创建表的pattern_digest
和normalized_columns
列rewrite_rules
。install_rewriter.sql
现在总是创建这些列,所以不需要install_rewriter_with_optional_columns.sql
.表的
enabled
列rewrite_rules
现在定义为 ,ENUM('YES,'NO')
而不是CHAR(1)
。相应地,要启用规则,请将此列设置为YES
而不是Y
。
如果您之前安装了
Rewriter
插件,要升级,请先运行卸载脚本将其卸载,然后再运行安装脚本。重新安装后,再次加载您的重写规则(这是必要的,因为卸载会删除规则表)。有关说明,请参阅 安装或卸载重写器查询重写插件。
MySQL Community Edition RPM 包现在在安装过程中调用 mysql_ssl_rsa_setup来创建默认的 SSL 和 RSA 密钥和证书文件。(缺陷号 20855737)
my_print_defaults现在屏蔽密码。要以明文形式显示密码,请使用新
--show
选项。此外,使用该--print-defaults
选项调用的客户端程序的输出现在会屏蔽密码。(错误#19953365,错误#20903330)-
一个新的系统变量,
require_secure_transport
使管理员能够要求所有客户端连接到服务器使用某种形式的安全传输。合格连接是使用 SSL 的 TCP/IP 连接,或使用套接字文件(在 Unix 上)或共享内存(在 Windows 上)的连接。启用此变量后,服务器会拒绝不安全的连接尝试,这些尝试会因ER_SECURE_TRANSPORT_REQUIRED
错误而失败。此功能补充了优先考虑的每个帐户的 SSL 要求。例如,如果一个帐户是用 定义的
REQUIRE SSL
,启用require_secure_transport
后就无法使用该帐户使用 Unix 套接字文件进行连接。
ST_NumInteriorRing()
被添加为更符合标准的别名ST_NumInteriorRings()
。(错误#77598,错误#21362781)所有空间计算现在都使用 Boost.Geometry 函数完成。所有较旧的非基于 Boost 的算法已被删除。(错误#77444,错误#21300713)
采用 WKT 或 WKB 值(例如
ST_GeomFromText()
和ST_GeomFromWKB()
)的几何构造函数不检查尾随垃圾字节。他们现在拒绝尾随非空白字符并产生错误。(错误#77244,错误#21198064)几何对象构造函数(例如
Point()
和MultiPolygon()
现在)在拒绝无效参数方面更加严格。(错误#76337,错误#20712775)
-
在 MySQL 5.7.4 中
ERROR_FOR_DIVISION_BY_ZERO
,NO_ZERO_DATE
、 和NO_ZERO_IN_DATE
SQL 模式已更改,以便它们在显式命名时不执行任何操作。相反,它们的效果包含在严格 SQL 模式(STRICT_ALL_TABLES
或STRICT_TRANS_TABLES
)的效果中。目的是减少依赖于严格模式的 SQL 模式的数量,并使它们成为严格模式本身的一部分。ERROR_FOR_DIVISION_BY_ZERO
但是,通过包含、NO_ZERO_DATE
和 使严格模式更加严格的更改NO_ZERO_IN_DATE
导致了一些问题。例如,在具有严格模式但未NO_ZERO_DATE
启用 的 MySQL 5.6 中,TIMESTAMP
可以使用DEFAULT '0000-00-00 00:00:00'
. 在具有相同模式设置的 MySQL 5.7.4 中,严格模式包括 effect ofNO_ZERO_DATE
和TIMESTAMP
columns cannot be defined withDEFAULT '0000-00-00 00:00:00'
。如果它们包含此类列 ,这将导致CREATE TABLE
从 5.6 到 5.7.4的语句复制失败。TIMESTAMP
长期计划仍然是将这三种受影响的模式包含在严格的 SQL 模式中,并在未来的 MySQL 版本中将它们作为显式模式删除。但是为了恢复 MySQL 5.7 与 MySQL 5.6 严格模式的兼容性,并为受影响的应用程序修改提供额外的时间,进行了以下更改:
ERROR_FOR_DIVISION_BY_ZERO
,NO_ZERO_DATE
, 和NO_ZERO_IN_DATE
在显式命名时再次产生效果。这将恢复在 MySQL 5.7.4 中所做的更改。ERROR_FOR_DIVISION_BY_ZERO
、NO_ZERO_DATE
和NO_ZERO_IN_DATE
不再是严格 SQL 模式的一部分。这将恢复在 MySQL 5.7.4 中所做的更改。ERROR_FOR_DIVISION_BY_ZERO
、NO_ZERO_DATE
和NO_ZERO_IN_DATE
现在包含在默认sql_mode
值中,因此包括这些模式:ONLY_FULL_GROUP_BY
、STRICT_TRANS_TABLES
、NO_ZERO_IN_DATE
、NO_ZERO_DATE
、ERROR_FOR_DIVISION_BY_ZERO
、NO_AUTO_CREATE_USER
和NO_ENGINE_SUBSTITUTION
。
通过上述更改,默认情况下仍会启用更严格的数据检查,但可以在当前需要或需要这样做的环境中禁用各个模式。
虽然
ERROR_FOR_DIVISION_BY_ZERO
,NO_ZERO_DATE
, 和NO_ZERO_IN_DATE
again 可以与严格模式分开使用,但它们应该一起使用。提醒一下,如果在未启用严格模式的情况下启用它们,则现在会出现警告,反之亦然。参考资料:另请参阅:Bug #75439、Bug #20367829。
-
InnoDB: 自适应哈希索引搜索系统现在是分区的,每个索引绑定到一个特定的分区,每个分区由一个单独的锁存器保护。分区由
innodb_adaptive_hash_index_parts
配置选项控制。在 MySQL 5.7.8 之前,自适应哈希索引搜索系统由单个闩锁 (
btr_search_latch
) 保护,这可能成为争论的焦点。为减少争用,innodb_adaptive_hash_index_parts
默认设置为 8。最大设置为 512。(错误号 20985298) InnoDB: 新
innodb_log_checksum_algorithm
选项指定如何生成和验证存储在重做日志磁盘块中的校验和。innodb_log_checksum_algorithm
支持与 相同的算法innodb_checksum_algorithm
,其中包括innodb
、crc32
、none
及其关联的严格形式。以前,innodb
重做日志磁盘块仅支持该算法。innodb_log_checksum_algorithm=innodb
是默认设置。感谢 Alexey Kopytov 提供的补丁。(缺陷 #20531208,缺陷 #75595)InnoDB:
InnoDB
现在支持虚拟生成列的二级索引。有关详细信息,请参阅 二级索引和生成的列。InnoDB: 添加了内部服务器层函数以允许
InnoDB
清除线程构造和销毁线程句柄对象,并在表对象不存在时计算虚拟生成的列索引值。需要此增强功能来支持虚拟生成列上的二级索引。-
InnoDB: 虚拟生成的列值不再占用数据库行中的空间。通过此更改,在添加或删除虚拟生成的列时不再需要重建表。只需要更新系统表来注册新的元数据。
虚拟生成的列仍然在
InnoDB
元数据中表示。的N_COLS
字段INNODB_SYS_TABLES
仍然计算虚拟生成的列,并且INNODB_SYS_COLUMNS
仍然包括虚拟生成的列元数据。新
INFORMATION_SCHEMA
表INNODB_SYS_VIRTUAL
提供有关虚拟生成列所基于的列的元数据。 -
InnoDB:
InnoDB
现在支持 file-per-table 表空间的页级压缩。COMPRESSION
通过在创建或更改表时指定属性来启用页面压缩支持的压缩算法包括Zlib
和LZ4
。此功能称为透明页面压缩,它依赖于稀疏文件和打孔支持。它在具有 NTFS 的 Windows 和支持 MySQL 的 Linux 平台的子集上受支持,其中内核级别提供打孔支持。有关此功能的更多信息,请参阅 InnoDB 页面压缩。
InnoDB:
innodb_flush_sync
默认情况下启用 的新innodb_io_capacity
忽略检查点发生的突发 I/O 活动的设置。要遵守InnoDB
定义的后台 I/O 活动innodb_io_capacity
,请禁用innodb_flush_sync
.InnoDB:
innodb_purge_threads
和 的默认值innodb_page_cleaners
从 1 更改为 4。如果页面清理器线程的数量超过缓冲池实例的数量,innodb_page_cleaners
则自动设置为与 相同的值innodb_buffer_pool_instances
。复制: 的行为
SET GTID_PURGED
已更改,因此它不会Previous_gtids_log_event
向二进制日志添加任何 GTID,也不会轮换二进制日志。而是将 GTID 添加到mysql.gtid_executed
表中。此修复可确保在所有情况下用于binlog_gtid_simple_recovery=1
使用 MySQL 5.7.8 或更高版本的服务器都是安全的,其中所有二进制日志都是由使用 MySQL 5.7.8 或更高版本的服务器生成的。(错误#75767,错误#20470724)复制: 当使用多线程从属时,每个工作线程都有自己的事务队列来处理。在以前的 MySQL 版本中,
STOP SLAVE
等待所有工作人员处理他们的整个队列。此逻辑已更改,以便STOP SLAVE
首先找到由任何工作线程提交的最新事务。然后,它等待所有工作人员完成早于该时间的交易。不处理较新的交易。如果某些工作队列包含多个事务,新逻辑可以STOP SLAVE
更快地完成。(缺陷 #75525,缺陷 #20369401)Solaris: Solaris tarball 和 PKG 分发不再包含
-gcc
分发文件名。(缺陷号 21047137)以前,
max_digest_length
系统变量控制计算语句摘要的所有服务器函数的最大摘要长度。然而,虽然性能模式可能需要维护许多摘要值,但其他服务器功能(例如查询重写插件)每个会话只需要一个摘要。增加该max_digest_length
值对这些函数的总内存需求影响不大,但会显着增加性能模式内存需求。要为性能模式单独配置摘要长度,其摘要长度现在由新performance_schema_max_digest_length
系统变量控制。(缺陷号 20963147)服务器现在为错误的 值打印更多描述性诊断消息
secure_file_priv
。(缺陷号 20771331)对于创建多列
SPATIAL
索引的尝试,服务器先前返回了一个“ Incorrect arguments to SPATIAL INDEX ”错误。现在它返回ER_TOO_MANY_KEY_PARTS
(“指定的关键部分太多;最多允许 1 个部分”)。(漏洞 #18320371)对于包含对象信息的表,Performance Schema 现在使用小写的存储程序名称。(漏洞 #17818062)
为了使密码更改操作的效果更清楚, mysql_secure_installation现在显示其密码被更改的用户。(漏洞#17343687)
现在,服务器的每个补丁版本都会增加 C 客户端库的补丁编号。此号码的格式为
major.minor.patch
. (错误#77544,错误#21341481)-
系统
max_statement_time
变量已重命名为max_execution_time
. 、和 状态变量已重命名 为Max_statement_time_exceeded
、 和 。Max_statement_time_set
Max_statement_time_set_failed
Max_execution_time_exceeded
Max_execution_time_set
Max_execution_time_set_failed
MAX_STATEMENT_TIME
statements选项已 被SELECT
删除,因为它的功能现在可以使用更通用的优化器提示语法(请参阅 优化器提示)。像这样开头的语句:SELECT MAX_STATEMENT_TIME = N ...
应该重写为这样开始:
SELECT /*+ MAX_EXECUTION_TIME(N) */ ...
两者之间存在一些细微的实现差异。
MAX_STATEMENT_TIME
不允许在非顶级SELECT
语句(例如子查询)或存储程序中使用,并产生错误。MAX_EXECUTION_TIME
在这些上下文中是允许的,但会被忽略。(错误#77461、错误#21306646、错误#77460、错误#21306392、错误#77459、错误#21306319) GeometryCollection()
现在允许不带参数作为创建空几何的一种方式。(错误#77114,错误#21127270)/etc/init.d/mysqld中 的关闭超时值 对于某些环境来说太短了。该值已从 60 秒增加到 600 秒。(错误#76900,错误#20987568)
优化器成本模型的使用扩展到估计
test_if_cheaper_ordering()
访问表块的 I/O 成本中的索引扫描成本。(错误#76804,错误#20947871)对于从 DMG 包在 OS X 上安装 MySQL 的操作,如果生成随机
root
帐户密码,它现在会显示在对话框中。(错误#76792,错误#20930305)默认情况下, mysqldump不再转储
sys
模式。仍然可以通过在命令行上明确命名它来转储它(例如, mysqldump --databases sys)。(错误#76735,错误#20902791)-
对于非 TCP/IP 连接,这些更改是在
--ssl
指定强制使用 SSL 时进行的:对于命名管道和共享内存连接,尝试使用 SSL 现在会产生错误,因为这些连接使用非网络协议。
对于 Unix 套接字文件连接,SSL 不增加任何安全性。连接是允许的,但
mysql
客户端现在生成一个警告,表明 SSL 没有为此传输协议添加任何内容。
(错误#76508、错误#20785409、错误#21025587)
mysql_ssl_rsa_setup现在有一个
--uid=name
选项,指定程序创建的任何文件的所有者(如果程序执行为root
)。(错误#76369,错误#20726413)MySQL 发行版现在包括
innodb_stress
一套测试用例。感谢 Mark Callaghan 的贡献。(错误#76347,错误#20717127)生成列的数据类型现在允许该
COLLATE
属性。(错误#76329,错误#20709487)FEDERATED
存储引擎的连接现在 将会话program_name
连接属性设置federated
为允许识别连接源。(缺陷 #68781,缺陷 #16555730)-
以前,在服务器运行时更改
validate_password
插件字典文件(由validate_password_dictionary_file
系统变量命名)需要重新启动服务器才能识别更改。现在validate_password_dictionary_file
可以在运行时设置并分配一个值会导致在不重新启动的情况下读取命名文件。此外,还有两个新的状态变量可用。
validate_password_dictionary_file_last_parsed
指示上次读取词典文件的时间,并validate_password_dictionary_file_words_count
指示其中包含的单词数。(错误#66697,错误#14588145) COM_FIELD_LIST
为包含太多数据 的命令产生的错误已从 更改ER_UNKNOWN_COM_ERROR
为信息更丰富的ER_MALFORMED_PACKET
。(错误#53699,错误#11761229)-
一个新的系统变量,
disabled_storage_engines
使管理员能够指定不能用于创建新表或表空间的存储引擎。默认情况下,此变量为空(未禁用任何引擎),但可以将其设置为一个或多个引擎的逗号分隔列表。值中指定的任何引擎都不能用于使用 或 来创建表或表空间CREATE TABLE
,CREATE TABLESPACE
也不能用于ALTER TABLE ... ENGINE
orALTER TABLESPACE ... ENGINE
更改现有表或表空间的存储引擎。尝试这样做会导致ER_DISABLED_STORAGE_ENGINE
错误。disabled_storage_engines
不限制现有表的其他 DDL 语句,例如CREATE INDEX
、TRUNCATE TABLE
、ANALYZE TABLE
、DROP TABLE
或DROP TABLESPACE
。这允许平滑过渡,以便使用禁用引擎的现有表或表空间可以通过诸如.ALTER TABLE ... ENGINE
permitted_engine
-
MySQL 发行版不再包含该
sql-bench
目录。CMake选项也已被删除 。INSTALL_SQLBENCHDIR
参考资料:另请参阅:Bug #21303289。
系统变量的默认值
table_open_cache_instances
已从 1 增加到 16。系统
read_only
变量使服务器能够进入只读模式,在这种模式下,服务器只允许具有SUPER
特权的用户进行客户端更新。一个新的super_read_only
系统变量,如果启用,将禁止客户端更新,即使是拥有SUPER
. “超级”只读模式对于准备服务器以进行移动或升级等操作很有用,因为它可以防止所有客户端用户修改数据,甚至是管理员。-
所谓的“快速互斥”代码已从服务器源中删除。它没有提供任何可衡量的好处,使代码复杂化,并且对于某些架构(如 POWER8)来说是有问题的。(未记录的)
WITH_FAST_MUTEXES
CMake 选项也已被删除。参考资料:另请参阅:Bug #37703、Bug #11748914、Bug #72806、Bug #18871517、Bug #72807、Bug #18871138、Bug #72805、Bug #18870931。
mysqld_safe不再使用数据目录作为设置的可能位置
MYSQL_HOME
。(自 MySQL 5.0 以来已弃用。)新
session_track_transaction_info
系统变量配置一个会话跟踪器,提供有关事务状态和特征的信息。此信息旨在使应用程序(例如,执行负载平衡的应用程序)知道何时可以将事务从一个会话移动到另一个会话。从 C API 中,事务状态信息可以通过传递SESSION_TRACK_TRANSACTION_CHARACTERISTICS
或SESSION_TRACK_TRANSACTION_STATE
作为type
参数传递给mysql_session_track_get_first()
和mysql_session_track_get_next()
函数来获取。有关详细信息,请参阅 客户端会话状态的服务器跟踪。
-
Incompatible Change:在定义宏的情况下,头文件中 的
mysql_parser
插件服务接口此符号的测试使用了错误的名称,因此接口未启用正确的代码。测试已更正,并对结构内函数指针成员的 API 进行了一些调整:service_parser.h
MYSQL_DYNAMIC_PLUGIN
mysql_parser_service_st
有些函数指针名称以 开头
mysql_parser_
,有些以 开头mysql_
。为了保持一致性,以 开头的函数指针成员名称mysql_parser_
更改为以 开头mysql_
。添加了缺少的
mysql_get_statement_digest
函数指针成员。
这些修改改变了服务 API。必须重新编译依赖于该服务的与此版本的 MySQL 一起使用的任何插件。(缺陷号 20856729)
不兼容的更改:
VIRTUAL
生成列的 内部存储格式对于MyISAM
具有此类列的表,这是一个不兼容的更改;对于升级,用于ALTER TABLE
在升级前删除列并在升级后重新添加它们。(错误#77312,错误#21237637)-
不兼容的更改: 对于多字节字符集,
LOAD DATA
可能无法正确分配空间并因此忽略输入行。此更改的结果是以前接受的无效字符数据现在被拒绝,如果您从没有此错误修复的旧服务器复制到具有此错误修复的较新服务器,这可能会导致问题。例如,如果接受无效
utf8
字符集数据的旧服务器通过此错误修复复制到较新的服务器,则较新的服务器将不会接受数据并且复制将失败并出现 “无效的 utf8 字符串”错误。此问题的解决方案包括:更正无效数据,使其对字符集正确
使用数据不无效的不同字符集
将 master 升级到修复了错误的版本,以便 master 和 slave 以相同的方式解释数据
(错误#76237、错误#20683959、错误#23080148)
参考资料:此问题是 Bug #14653594 的回归。
创新数据库;分区: 在某些极少数情况下,优化器会修剪表的所有分区,
InnoDB
但未能将表从考虑作为获取匹配项的来源中删除,而是要求初始化表并准备获取记录。这发生在初始化期间未设置活动索引时。为了解决这个问题,我们现在在初始化期间设置活动索引 ID,即使没有可供选择的分区也是如此。此行为也与 MySQL 5.6 中处理相同情况的方式相匹配。(漏洞 #21211524)创新数据库;分区: 分区表上的排序索引读取
InnoDB
将行添加到预取缓存,这可能会导致来自错误分区的行,因为预取缓存不支持分区表。现在在这种情况下预取缓存被禁用。(缺陷号 20584754)创新数据库;分区: 与同一分区 表
ALTER TABLE ADD UNIQUE INDEX
并发运行时失败 (缺陷 #20510811,缺陷 #75834)INSERT
InnoDB
-
创新数据库;分区:表 的
CREATE_TIME
列INFORMATION_SCHEMA.TABLES
现在显示分区表的正确表创建时间InnoDB
。表的CREATE_TIME
列INFORMATION_SCHEMA.PARTITIONS
现在显示分区表分区的正确分区创建时间InnoDB
。表的
UPDATE_TIME
列INFORMATION_SCHEMA.TABLES
现在显示分区InnoDB
表最后一次由 、 或 更新INSERT
的DELETE
时间UPDATE
。表的UPDATE_TIME
列INFORMATION_SCHEMA.PARTITIONS
现在显示分区InnoDB
表的分区上次更新的时间。(缺陷 #69990,缺陷 #17299181) 创新数据库;Microsoft Windows: 无法在类 Unix 系统上打开使用相对数据文件路径在 Windows 上创建的通用表空间。
InnoDB
无法转换Windows 版本相对数据文件路径中使用的反斜杠 ( “ \ ” ) 目录分隔符。(缺陷号 20555168)创新数据库;Microsoft Windows: 在 Windows 上关闭期间,在
handle_shutdown()
侦听器运行时释放了侦听器对象,导致buf_pool_from_bpage()
. (缺陷号 20421223)创新数据库;Microsoft Windows: 在 Windows 上,异步 I/O 请求在
InnoDB
初始化中止后仍处于等待状态。(漏洞#19363615)InnoDB: 对于
innodb_strict_mode=OFF
,一条CREATE TEMPORARY TABLE ... ROW_FORMAT=Compressed TABLESPACE=innodb_file_per_table DATA DIRECTORY ...
语句提出了一个断言。临时表不支持该DATA DIRECTORY
子句,应将其忽略。(缺陷 #21324507,缺陷 #77495)InnoDB: 该
btr_search_drop_page_hash_index
函数在获取闩锁之前取消引用自适应哈希索引块,这可能导致竞争条件。(缺陷号 21310520)InnoDB: MySQL 5.7.2 中引入的回归导致与 innochecksum相关的内存泄漏。(漏洞 #21255718)
InnoDB: 该
records_in_range
函数为空间索引返回了一个常量值。(缺陷 #21245805,缺陷 #77332)InnoDB: 在某些情况下,没有为
rw_lock_t
实例正确分配内存。(漏洞 #21242541)-
InnoDB:
SHOW ENGINE INNODB STATUS
不再报告互斥指标。互斥指标现在由 报告SHOW ENGINE INNODB MUTEX
。(缺陷 #21238953,缺陷 #77314)参考资料:另请参阅:Bug #21052754、Bug #21266784。
InnoDB: 重新引入了在字段前缀上构建自适应哈希索引所需的功能,以提高顺序插入性能。该功能在 MySQL 5.7.2 中被 Bug #21198396 的修复移除。(缺陷 #21198396,缺陷 #77246)
InnoDB: 定义时
buf_block_t
,经常在同一区域访问锁和互斥锁,这可能会导致意外的缓存行共享。(缺陷号 21153684)InnoDB: 该
ib_cursor_moveto
函数不接受字段少于为索引定义的字段的搜索元组。(缺陷 #21121197,缺陷 #77083)InnoDB: 函数
ib_table_truncate
未能释放事务,导致服务器关闭时挂起。(错误#21121164,错误#77084)InnoDB: 该
ib_open_table_by_id
函数向 传递了一个不正确的参数dict_table_open_on_id
。(缺陷 #21121084,缺陷 #77100)InnoDB: 在类 Unix 平台上,
os_file_create_simple_no_error_handling_func
当os_file_create_func
设置innodb_flush_method
为O_DIRECT
. (缺陷 #21113036,缺陷 #76627)InnoDB: 级联操作导致
FTS_DOC_ID_INDEX
. 两个级联操作使用相同的文档 ID。(错误#21111301,错误#77087)InnoDB: 使用无效
innodb_data_file_path
设置启动服务器不会产生足够信息的错误消息。(缺陷 #21103446,缺陷 #77056)InnoDB: MySQL 5.7.5 中引入的回归导致在删除单列主键后重建表时跳过排序。(漏洞 #21103101)
InnoDB:当表或数据库名称包含特殊字符时, 打开外键引用表
foreign_key_checks
会导致错误。(缺陷 #21094069,缺陷 #77043)InnoDB: 函数
page_zip_verify_checksum
为有效的压缩页面返回 false。(缺陷号 21086723)InnoDB: 表空间的 DDL 操作可能无法隐式提交当前事务。(漏洞 #21081898)
InnoDB: 包含多个空间索引更新的部分完成事务的回滚在
row_ins_sec_index_entry_by_modify()
. (缺陷号 21076238)InnoDB: 在锁冲突的情况下,关闭可能会挂起等待异步回滚完成。(漏洞 #21075892)
InnoDB: 为避免与隐式创建的 file-per-table 表空间冲突,
CREATE TABLESPACE ... ADD DATAFILE
不再支持在 MySQL 数据目录 (datadir
) 下的子目录中创建表空间数据文件。此外,语句中指定的数据文件路径CREATE TABLESPACE ... ADD DATAFILE
必须是现有目录。InnoDB
不再为CREATE TABLESPACE ... ADD DATAFILE
语句创建丢失的目录。(缺陷 #21068487,缺陷 #77002)-
InnoDB:
SHOW ENGINE INNODB MUTEX
在 MySQL 5.7.2 中删除的功能已修改并重新添加。现在可以使用以下选项动态配置互斥锁统计信息收集:-
要启用互斥锁统计信息的收集,请运行:
SET GLOBAL innodb_monitor_enable='latch';
-
要重置互斥量统计信息,请运行:
SET GLOBAL innodb_monitor_reset='latch';
-
要禁用互斥锁统计信息的收集,请运行:
SET GLOBAL innodb_monitor_disable='latch';
有关详细信息,请参阅SHOW ENGINE 语句。
InnoDB
之前在 下定义 的存储引擎同步调试检查UNIV_SYNC_DEBUG
现在在 下定义,UNIV_DEBUG
并且在使用 CMake选项编译调试支持时可用。编译调试支持时,同步调试检查由 配置选项控制。(漏洞 #21052754)WITH_DEBUG
InnoDB
innodb_sync_debug
-
InnoDB: 在保护模式下未关闭由截断例程在本地打开的表空间。(缺陷号 21046968)
InnoDB: 当截断逻辑将不活动的撤消表空间识别为撤消日志截断的候选者时,引发了断言。当可用撤消表空间的数量超过撤消日志的数量时,一些撤消表空间处于非活动状态。(缺陷号 21046781)
InnoDB: 在启动时,
InnoDB
更新SYS_DATAFILES
内部系统表,space_id
即使记录已经存在并且SYS_DATAFILES.PATH
与当前值匹配。(漏洞 #21044191)InnoDB: 在 Windows 调试版本中,
innodb_flush_method
设置normal
或unbuffered
引发断言。(缺陷号 20981684)InnoDB: 事务在执行 DDL 操作时可能会受到回滚。事务未标记为 DDL 事务,
TRX_FORCE_ROLLBACK_DISABLE
也未设置。(缺陷号 20979020)InnoDB:
ALTER TABLE ... IMPORT TABLESPACE
对具有前缀索引的表 的(缺陷 #20977779,缺陷 #76877)InnoDB:
innodb_page_size
使用64KB 的设置和小于 12MB 的系统表空间数据文件大小 初始化数据库InnoDB
页面大小为 64KB,第一个系统表空间数据文件 ()ibdata1
不足以包含双写缓冲区块(block1 和 block2)。为确保双写缓冲区块适合第一个系统表空间数据文件,强制执行最小数据文件大小。如果innodb_page_size
小于或等于 16KB,则第一个系统表空间数据文件 (ibdata1
) 的最小数据文件大小为 3MB。对于 32KB 页面大小,最小数据文件大小为 6MB,对于 64KB 页面大小,最小数据文件大小为 12MB。(缺陷号 20972309)InnoDB: 在迭代 DML 级联操作期间,由外键约束相关的表之间的全文搜索操作未正确级联。(缺陷 #20953265,缺陷 #76817)
InnoDB: 在 MySQL 5.7.2 中,128 个 undo logs(回滚段)中的 32 个被保留为临时表事务的非重做 undo logs。由于始终将剩余的撤消日志之一分配给系统表空间,因此仍有 95 个撤消日志可用于分配给系统表空间或单独的撤消表空间。此更改有效地将
innodb_undo_tablespaces
最大限制降低到 95。换句话说,95 个可用撤消日志的限制也将撤消表空间的最大数量限制为 95。在 MySQL 5.7.8 中,innodb_undo_tablespaces
最大值正式降低到 95。(错误# 20938115)InnoDB: 外键约束对象加载父表而子表加载失败时发生内存泄漏。外键约束对象应该只加载子表。(错误#20926253,错误#21041449)
InnoDB: 仅调试代码集
m_prebuilt
,这可能会影响就地ALTER TABLE
行为。m_prebuilt
to 不应用于在仅调试代码中存储中间值。(缺陷 #20921940,缺陷 #76774)InnoDB:数据结构 的定义
fil_node_t
已从移动fil0fil.cc
到,fil0fil.h
以便该模块外部的诊断代码可以访问有关属于表空间的文件的信息。(错误#20886222,错误#76694)InnoDB: 修改断言代码以避免在 OS X 10.10.2 上编译 MySQL 时出现编译器警告。(缺陷 #20883256,缺陷 #76690)
InnoDB: 升级到 MySQL 5.7.6 或更高版本后,在截断最初在 MySQL 5.7.5 或更早版本中创建的表后重新启动服务器会引发“ SYS_INDEXES 中的 MERGE_THRESHOLD 长度不正确”错误。MySQL 5.7.6 中
MERGE_THRESHOLD
的内部表中添加了一 升级后未重建或导入的表的记录不包括新列。该 操作更新了表的 记录以包含新列,但将 值设置为 NULL。(缺陷号 20882432)SYS_INDEXES
SYS_INDEXES
TRUNCATE TABLE
SYS_INDEXES
MERGE_THRESHOLD
InnoDB: 在并发删除表空间操作期间加载更改缓冲区位图页面失败导致服务器退出。(缺陷号 20878735)
InnoDB:
innodb_force_recovery
当3 或更高的设置阻止回滚处于某个ACTIVE
状态 时,会发生关闭挂起ACTIVE
事务现在放置在XA PREPARE
主内存数据结构中的状态中,以允许关闭正常进行。事务将ACTIVE
在下次重新启动时恢复并回滚,除非innodb_force_recovery
再次设置为 3 或更高。(缺陷号 20874411)InnoDB: 如果在 期间发生服务器退出
XA ROLLBACK
,则事务在XA PREPARE
状态中被错误地恢复。因此,后续XA COMMIT
事务是可能的,这将破坏 ACID 合规性并可能导致表索引之间的损坏。(缺陷 #20872655,缺陷 #76672)InnoDB:由于函数中 的
CREATE TABLESPACE
内存泄漏,操作引发了 Valgrind 错误os_create_subdirs_if_needed
。(缺陷号 20865674)InnoDB:删除了对的 调用以
buf_page_print()
避免页面转储mysql-test-run
日志InnoDB
仍然打印与文件 I/O 相关的页面转储。(缺陷号 20863042)InnoDB:
CREATE TABLESPACE
无法将内部表空间文件移动到以前缀开头的保留名称空间innodb_
,从而允许删除内部表空间文件。(漏洞 #20840368,漏洞 #76603)InnoDB:
TRUNCATE TABLE
对具有全文搜索索引的通用表空间表 的(缺陷号 20834483)InnoDB: 由于 XA PREPARE 事务持有显式锁,关闭时引发断言。(缺陷 #20816223,缺陷 #76567)
InnoDB: 该
fts_print_doc_id
函数在调试版本中打印了太多调试信息。fts_enable_diag_print
现在改为使用。(缺陷号 20811125)InnoDB:操作 失败后
DROP TABLE
,清除后台线程在尝试访问表的索引页时断言。清除不应尝试清除标记为已损坏的表。清除现在检查损坏的主索引。(缺陷 #20789078,缺陷 #75913)InnoDB:
crc32
在从具有不同字节顺序的机器复制的数据文件上重新启动服务器时,遇到校验 和校验和不匹配错误无论生成校验和的系统的本crc32
机字节顺序如何,都应识别校验和。(缺陷 #20783098,缺陷 #76375)InnoDB:
ALTER TABLE ... DROP INDEX
对具有外键依赖项的表 的(缺陷号 20768847)InnoDB:
InnoDB
尝试取消引用 NULL 外键对象 时引发断言(缺陷号 20762798)InnoDB:
ALTER TABLE
由于 MySQL 5.7.6 中引入了对通用表空间的本机分区支持而引入的回归,因此操作引发了断言 。(缺陷号 20759613)InnoDB: 在某些情况下,调用的函数
DBUG_ENTER
没有调用DBUG_RETURN
. (缺陷 #20753620,缺陷 #76447)InnoDB: MySQL 5.7.6 中的函数回归
trx_is_started
导致关机挂起。(缺陷号 20744155)InnoDB: MeCab 全文插件解析器无法处理内存不足异常。(缺陷号 20742590)
InnoDB: 由于记录被错误地取消删除标记,在回滚操作期间引发了断言。(缺陷号 20734998)
InnoDB: 当操作调用过时的外键代码时,在调试版本中引发断言,
ALTER TABLE
同时尝试创建优化的临时表作为优化程序计划的一部分。临时表不支持外键。对于优化的临时表,外键代码的调用现在被阻止。(缺陷号 20730289)InnoDB: 一个
INSERT
操作提出了一个断言。BLOB
确定存储压缩页面时要保留的范围数的计算(缺陷号 20713559)InnoDB:函数 中缺少括号
fsp_flags_is_valid
可能导致无法识别损坏的数据文件。(缺陷号 20671465)InnoDB: 使用百分比字符“%”作为查询标记中最后一个字符的查询引发了全文解析器插件断言。如果指定为查询标记中的第一个或最后一个字符,使用全文解析器插件框架创建的全文解析器插件现在将忽略“%”字符。内部 SQL 解析器不允许使用“%”字符作为查询标记中的第一个字符。使用“%”字符作为查询令牌中的最后一个字符是为前缀匹配保留的。(缺陷号 20668156)
InnoDB: 该
INFORMATION_SCHEMA.FILES
报告所有InnoDB
表空间类型的元数据,包括 file-per-table 表空间、通用表空间、系统表空间、临时表空间和撤消表空间(如果存在)。和表不再报告系统表空间和临时表空间元INFORMATION_SCHEMA.INNODB_SYS_TABLESPACES
数据INFORMATION_SCHEMA.INNODB_SYS_DATAFILES
。但是,这些表继续为 file-per-table 和通用表空间提供元数据。(错误#20660744、错误#21086257、错误#77032、错误#76182)InnoDB: MeCab 解析器插件 的
InnoDB
全文搜索功能将打印一条空错误消息。(缺陷 #20651493,缺陷 #76164)InnoDB: 导入具有全文索引的表空间导致在尝试重建索引时出现断言。(缺陷号 20637494)
InnoDB: DML 操作在
btr_estimate_n_rows_in_range()
. 断言代码过于严格。(缺陷号 20618309)InnoDB: 将用户创建的
FTS_DOC_ID
列定义为主键会产生不正确的全文搜索相关性排名。(缺陷号 20597981)InnoDB: 在表导入操作期间,由于初始化值
INSERT
上出现重复键错误而失败 (缺陷 #20597821,缺陷 #76037)AUTO_INCREMENT
AUTO_INCREMENT
InnoDB: 删除全文搜索索引后,隐藏
FTS_DOC_ID
和FTS_DOC_ID_INDEX
列阻止了在线 DDL 操作。(缺陷 #20590013,缺陷 #76012)InnoDB:当尝试在只读模式下在
InnoDB
不存在的临时目录 () 中创建临时文件 时,服务器启动时出现断言tmpdir
(缺陷号 20578834)InnoDB: 设置(、 和 遇到有效但不匹配的校验和时停止 例如,对于 ,有效的校验和会导致服务器停止。现在,不是停止服务器,而是 只打印一条错误消息。(缺陷号 20568464)
innodb_checksum_algorithm
strict_*
strict_none
strict_innodb
strict_crc32
InnoDB
innodb_checksum_algorithm=strict_crc32
innodb
InnoDB
InnoDB: 移动MySQL数据目录并修改
datadir
配置参数指向新位置后,存储在普通表空间的表因找不到表空间数据文件而无法打开。为了解决这个问题,CREATE TABLESPACE ... ADD DATAFILE
现在isl
在 MySQL 数据目录之外创建一个通用表空间数据文件时,会在 MySQL 数据目录中创建一个文件。此外,该fil_ibd_open
函数现在搜索通用表空间的方式与搜索 file-per-table 表空间的方式相同。(缺陷号 20563954)InnoDB: 通用表空间现在支持分区
InnoDB
表,现在可以将单个分区和子分区分配给通用表空间。SHOW CREATE TABLE
输出被修改为包括表空间标识符周围的引号。(错误#20554858,错误#20588947)InnoDB:添加空间索引 的
ALTER TABLE
操作导致服务器退出。(缺陷号 20547644)InnoDB: 检查表空间可能的最低页码的断言代码没有考虑到一般表空间。(漏洞 #20544581,漏洞 #20810627)
InnoDB: memcached
InnoDB
插件 错误地处理了无符号 NOT NULL 整数列。感谢 Piotr Jurkiewicz 提供的补丁。(缺陷 #20535517,缺陷 #75864)-
InnoDB: 对全文索引辅助表进行了如下改动:
如果主表被分配到一个通用表空间,则在同一个通用表空间中创建全文辅助表。
全文辅助表使用与主表相同的行格式创建。
如果使用该
DATA DIRECTORY
子句在数据目录之外的位置创建主表,则在与主表相同的位置创建全文辅助表。
(缺陷 #20527217,缺陷 #75869)
InnoDB: 该
memcached
set
命令允许负过期时间值。过期时间在内部存储为无符号整数。负值将被转换为一个大数字并被接受。最大过期时间值现在被限制为INT_MAX32
防止负过期时间值。(缺陷 #20478242,缺陷 #75790)-
InnoDB:当对父表的操作检测到无法加载父表的外键 的中断
ALTER TABLE
操作导致崩溃恢复后的错误和调试断言ALTER TABLE
删除了调试断言,错误被警告取代。(缺陷号 20476395)参考资料:此问题是 Bug #19267051 的回归。
InnoDB: 在调试版本中,启用该
btr_cur_limit_optimistic_insert_debug
标志会在更改缓冲区聚集索引中引发死锁异常。(缺陷 #20459905,缺陷 #75736)InnoDB:
DB_TRX_ID
如果 发现存储在记录中的值大于 , 现在会打印一条警告消息max_trx_id
。在调试版本中,会引发断言。(缺陷号 20445525)InnoDB: 对给定数据集范围内记录数的估计可能因页面大小而异。(缺陷号 20427694)
InnoDB:
SHOW ENGINE INNODB STATUS
由于计数器溢出错误,输出显示负保留和信号计数值。(缺陷号 20417397)InnoDB: 在重新使用游标事务进行写入操作之前,未能检查游标事务只读选项的状态,导致服务器在 memcached工作负载期间退出。(缺陷号 20391552)
InnoDB:在操作 期间填充空间索引时,在调试版本中引发断言
ALTER TABLE
。压缩行的数据元组大小在rec_get_converted_size_comp_prefix_low
函数中计算。函数中的调试代码没有考虑DATA_SYS_CHILD
节点指针中的空间索引或数据类型。(缺陷号 20372749)InnoDB:
CHECK TABLE
为具有空间索引的表返回 “错误计数”错误。(缺陷号 20313067)InnoDB:内存缓存客户端 采用的 MDL 锁导致 MySQL 企业备份
FLUSH TABLES WITH READ LOCK
操作挂起。(缺陷号 20275612)InnoDB: 嵌入式 MySQL 服务器无法以
innodb_undo_tablespaces=2
. 服务器无法找到在初始化 MySQL 实例时创建的撤消表空间。对于嵌入式 MySQL 安装, “ ”innodb_undo_directory
的默认值可能与 MySQL 数据目录不同。为解决此问题, 现在默认为 NULL,需要指定路径。如果未指定路径,则在 MySQL 数据目录中创建撤消表空间,如. MySQL 5.7.8 之前的嵌入式安装的解决方法是为 . (缺陷号 20023425).
innodb_undo_directory
datadir
innodb_undo_directory
InnoDB: 一个 DML 操作在文件中提出了一个断言
lock0lock.cc
。在聚簇索引页上持有独占行锁的会话启动了页面重组,而另一个会话在同一行上等待锁。页面重组更改了锁定顺序,导致lock_rec_add_to_queue()
. (缺陷号 20005279)InnoDB: 一个
DROP DATABASE
操作提出了一个断言。(漏洞 #19929435)InnoDB:
InnoDB
在表空间的数据目录位置从相对路径更改为完整路径后无法打开表空间。InnoDB
无法识别保留在数据字典中的相对路径指向与完整路径相同的数据文件。(漏洞#19896685)InnoDB:
TRUNCATE TABLE
与读写工作负载并行运行时,操作似乎挂起 。(缺陷 #19873470,缺陷 #74312)InnoDB: MySQL 5.7.5 中引入的排序索引构建特性在为小表添加索引时导致性能下降。回归是由于排序索引构建后发生的强制检查点触发的过度刷新。(缺陷 #19865673,缺陷 #74472)
InnoDB: 在 MySQL 5.7.5 及更高版本中,对索引列的更新可能会更慢。在 MySQL 5.7.5 之前的版本中,
InnoDB
在聚集索引页中保留 1/16 的空间用于将来的插入和更新。随着innodb_fill_factor
选项的引入,此行为在 MySQL 5.7.5 中发生了变化。使用innodb_fill_factor=100
,B-tree 索引页面在排序索引构建期间被完全填满,随后对索引页面的更新导致页面拆分。要恢复 MySQL 5.7.5 之前的行为,默认设置innodb_fill_factor=100
now 会在聚集索引页中留出 1/16 的空间供将来的索引增长使用。(缺陷 #19821087,缺陷 #74325)InnoDB: 该
ha_innobase::index_flags
函数返回了空间索引的无效标志。(漏洞 #19473391)InnoDB: 由于结构不一致,在回滚时找不到索引记录
purge_node_t
。这种不一致导致警告和错误消息,例如 “ sec 索引条目更新错误”、 “无法清除记录”和“试图清除未标记为删除的 sec 索引条目”。(错误#19138298、错误#70214、错误#21126772、错误#21065746)InnoDB: 该
ut_when_dtor
结构在 MySQL 5.7 中添加以解决 Valgrind 问题,已被删除以降低代码复杂性。(漏洞 #18309926)InnoDB: 在
INSERT
事务启动后修改事务模式时,操作引发断言。(漏洞#15866285)InnoDB: 同时使用和禁用索引的查询
UNION
将UNION ALL
由于重复的 B 树值而导致断言。(错误#76439,错误#20752543)InnoDB: 在调试版本中,尝试在删除表后创建空间索引会在函数
mysql.innodb_table_stats
中引发断言btr_cur_open_at_rnd_pos_func
(错误#76437,错误#20753642)InnoDB: 事务对象被传递给优化的临时表 API,导致断言。不支持回滚且不跨连接共享的优化临时表应忽略事务对象。(错误#76415,错误#20748479)
InnoDB: 当 时
innodb_thread_concurrency=1
,对优化临时表的查询导致其他会话挂起。对优化临时表的查询不应增加活动线程的数量。(错误#76346,错误#20762059)分区: 在执行相关子查询期间,服务器重新初始化对同一个表执行的扫描,而不会结束先前的扫描。(缺陷 #20949314,缺陷 #76810)
分区:
CREATE TABLE
在子分区表达式中使用无效函数的语句并不总是像预期的那样优雅地失败。(缺陷号 20310212)分区: 对于多个分区的有序索引扫描,MySQL 使用优先级队列对它们执行合并排序,优先级队列的条目包含指向包含已提取行的缓冲区的指针。当所有分区的所有行都被提取时,这个队列现在是空的。发生这种情况时,后续尝试通过传递空缓冲区指针来获取行,这导致服务器失败。
HANDLER ... READ ... PREV
当对分区表执行时,这可能会表现出来 现在在这种情况下,这个指针会保持不变NO_CURRENT_PART_ID
,这样分区处理程序就会知道队列是空的。(缺陷号 20270687)分区:
REPAIR TABLE ... QUICK
与多个分区表一起使用时可能会失败。(错误#76154,错误#20647894)分区: 在某些情况下,
ALTER TABLE ... REBUILD PARTITION
在锁定表上执行时未正确处理。(错误#75677,错误#20437706)复制: 当使用多个复制通道时,
RESET SLAVE
在非默认复制通道上发布会删除该通道,而RESET SLAVE
在默认复制通道上发布不会删除该通道,因为它始终存在。在以前的版本中,这意味着默认复制通道没有正确重置某些配置和状态参数。该修复程序确保RESET SLAVE
在默认复制通道上发布会重置所有参数。(错误#21107331、错误#21111229、错误#77086)复制:在表上的长时间写锁定期间 重复检查 ERR_LOCK_WAIT_TIMEOUT(如所做,例如通过重复执行
SHOW SLAVE STATUS
)导致断言。(缺陷号 21095969)复制:
SHOW BINLOG EVENTS
未显示 的正确语句XA COMMIT ... ONE PHASE
。虽然事件已正确记录和复制,SHOW BINLOG EVENTS
但在处理事件时显示的语句不正确。此修复可确保语句正确显示。(漏洞 #21053526)-
Replication:在线 更改时
gtid_mode
,如果autocommit
设置为 0 并且set gtid_next=UUID:NUMBER
已发出语句,则更改gtid_mode
未被阻止。该修复确保只能在事务上下文之外设置的变量现在只能在线程不拥有 GTID 且不持有匿名所有权的情况下设置。这会改变这些变量的行为:(缺陷号 20865683)
复制: mysqlbinlog将在应用数据库过滤器之前应用任何重写规则。这意味着在基于语句的复制事务与基于行的复制事务混合的情况下,只会输出一种或另一种类型的事务。该修复更改了行为,以便重写规则也适用于该 子句, 根据 参数的设置重写指定的数据库。这使得可以 在查询和行事件上使用该选项。此外,它消除了对
USE
db_name
db_name
--rewrite-db
--database
USE
db_name
语句并确保重写在数据库过滤器之前完成。(缺陷号 20810442)复制:
binlog_row_image
在运行设置为 的服务器时,在某些情况下,行解包无法正常运行minimal
。(缺陷号 20468712)复制: 当从站,尤其是半同步复制从站连接到主站时,他们有可能遇到一个 从站有比主站更多的 GTIDS 错误。在连接期间,slave 将所有复制的 GTID 发送给 master,master 检查是否所有与其匹配的
server_uuid
都包含在其gtid_executed
GTID 集中。GTID 有可能已经在从站的gtid_executed
GTID 集中,但不在主站的gtid_executed
GTID 集中。这是由于 GTID 被添加到gtid_executed
在它被添加到二进制日志之后,这意味着一个事务可能已经被复制并应用到从服务器上,但还没有提交到主服务器上。该修复确保 master 检查是否所有 GTID 都在 和 的联合gtid_executed
中gtid_owned
。(缺陷号 20464737)Replication: 一个复制从属运行的
gtid_mode
不是OFF
,log_bin=OFF
并且relay_log_info_repository=TABLE
在应用跨不同中继日志文件的事务时过早地使用事务的 GTID。这是由于从属 SQL 线程在mysql.slave_relay_log_info
事务中间或事务的 GTID 之后立即将中继日志信息刷新到表时引起的,因为中继日志的轮换。该修复程序跳过了gtid_state
将中继日志信息保存到mysql.slave_relay_log_info
表中的操作。(缺陷号 20451386)复制: 当
gtid_mode=ON
,发出一条SET gtid_next='UUID:NUMBER'
语句,然后发出一条导致错误的语句,例如CREATE..SELECT
,导致 上的断言失败COMMIT
。这是由于gtid_next
隐式提交语句被错误地设置为未定义,即使语句在隐式提交发生之前因错误而失败。(错误#20343644,错误#20444828)复制: 如果在启用的情况下重新启动从站
--relay-log-recovery
并且默认复制通道的初始化失败,则从站可以拒绝启动或在调试模式下引起断言。(漏洞 #20191813,漏洞 #20236305)复制: 使用
RESET MASTER
时,GTID 状态(gtid_executed
和gtid_purged
)被重置。在具有 的服务器上log_bin=OFF
,使用RESET MASTER
失败,因为未启用二进制日志。但是,从 MySQL 5.7.5 开始,即使禁用二进制日志,也可以启用 GTID。所以在这种情况下,没有办法重置 GTID 状态。该修复程序确保RESET MASTER
可以在启用了 GTID 的服务器上执行log_bin=OFF
,使您能够重置 GTID 状态。(漏洞 #19706455)复制: 如果使用基于语句的日志记录,当在单个语句中更新多个表时,单个事务可能被记录为两个不同的事务。这是由于二进制日志记录过程没有正确识别在事务表上运行的语句。该修复可确保正确识别它们,即使此类语句不会更改表的内容。(错误#16621582,错误#21349028)
复制: 当在同一主机上同时启动多个 mysqld实例时,这些实例可以获得相同的
server_uuid
. 该修复使用每个启动的mysqld 实例独有的设置来确保每个实例都获得一个唯一的 UUID。(漏洞 #16459136)复制: 某些复制线程状态未显示在表的
PROCESSLIST_INFO
列中threads
。(错误#77115,错误#21127308)复制: 在 MySQL 5.7.7 及更早版本中,GTID 会在任何时候自动禁用
--initialize
或--bootstrap
启用。在 MySQL 5.7.8 及更高版本中,GTID 在启用时不会被--initialize
禁用--bootstrap
。(错误#76884,错误#20980271)复制: 当使用带有 选项的mysql-test-run.pl
--ps-protocol
对服务器运行测试时log_bin=OFF
,设置gtid_next
然后执行 DDL 语句会导致错误。这是由于未正确记录 DDL 语句以使用设置时指定的 GTIDgtid_next
。(错误#76820,错误#20954452)复制: 当 时
log_bin=ON
,如果只读 XA 事务已准备好但主体为空,则后续会XA ROLLBACK
导致断言。(错误#76734,错误#20902763)Replication:
explicit_defaults_for_timestamp
已经从一个全局变量变成了一个global和session变量,现在复制了session变量。这意味着您可以更改变量并仍然保证每个语句在主从上使用相同的变量值,即使变量没有在主从上同步更改。(错误#76657,错误#20866059)Replication: 当一个slave停止时,
replication_applier_status_by_worker
显示worker_id
为1,没有显示正确的数字。(错误#76637,错误#20857660)复制: 设置
SESSION.GTID_NEXT=default
后立即设置SESSION.GTID_NEXT='ANONYMOUS'
会导致 ER_CANT_SET_GTID_NEXT_WHEN_OWNING_GTID 错误,但这也会将gtid_next
类型从ANONYMOUS
为AUTOMATIC
,这意味着下一个事务可能会导致 GTID_NEXT->TYPE != AUTOMATIC_GROUP || THD->OWNED_GTID.IS_EMPTY()断言。为避免这种可能性,修复程序确保设置SESSION.GTID_NEXT=default
不会更改gtid_next
可能导致错误的类型。(错误#76434,错误#20753378)复制:
server_id=0
如果服务器已经以默认 方式启动,则无法添加其他复制通道 该修复程序确保复制从站在 继续初始化通道之前server_id
是否大于 0CHANGE MASTER TO
(错误#76432、错误#20753463、错误#20712720)复制: 当服务器配置为
gtid_mode=ON
、log-bin=OFF
和autocommit
启用时,在提交期间可能会遇到ASSERTION `IS_STARTED()' FAILED错误。gtid_executed
当应用程序线程在禁用二进制日志记录或启用和禁用二进制日志记录时,在事务准备之前 将事务的 GTID 提交到表中时,这是可能的log_slave_updates
。原因是当服务器将事务的 GTID 保存到gtid_executed
表中时,计算的事务上下文可以在保存阶段提交autocommit
被启用。该修复程序确保在保存 GTID 的状态后计算事务上下文,然后对任何剩余的事务执行提交。(错误#76425,错误#20748570)-
复制: 当使用
autocommit
禁用和GTID_MODE=OFF_PERMISSIVE
,如果事务以CREATE TEMPORARY TABLE
语句开始,那么无论表是事务性的还是非事务性的,事务都会开始一个自动的 GTID 违规事务。但是,如果 类型设置为 语句GTID_NEXT='UUID:NUMBER'
后立即发出,在提交事务时,对可能违反 GTID 一致性的检查会导致断言失败,因为 gtid_next 类型已从更改为 。CREATE TEMPORARY TABLE
gtid_next
GTID_GROUP
AUTOMATIC_GROUP
GTID_GROUP
该修复程序确保拥有空 GTID 的事务正确检查它们是否破坏了 GTID 一致性。作为此修复的一部分,发现
autocommit
禁用时,该语句CREATE TEMPORARY TABLE
不会启动事务,因此立即设置GTID_NEXT='UUID:NUMBER'
不会导致错误。该修复程序确保在autocommit
禁用、执行CREATE TEMPORARY TABLE
或DROP TEMPORARY TABLE
启动事务时,无论 的状态如何log_bin
,binlog_format
以及是否正在使用事务或非事务存储引擎。这使行为保持一致,但在log-bin=OFF
. (错误#76416,错误#20748502) 复制: 当将 GTID 与 一起使用时
log-bin=OFF
,包含BINLOG
执行Format_description_log_event
将导致断言。原因是服务器将运行例程来处理 GTID 违规事务的结束,这是不正确的,因为--log-bin=OFF
事务不应作为违规事务处理。该修复程序确保在兼容性测试之前log_bin
检查 的状态。如果log_bin=OFF
,则跳过兼容性检查。这使得服务器不会激活标志,这些标志随后会触发例程的错误运行来处理最终导致断言的 GTID 违规事务。(错误#76406,错误#20743468)复制: 启用二进制日志记录后,使用存储函数和触发器导致长时间运行的过程插入许多记录导致内存使用量迅速增加。这是由于每个变量都分配了内存。该修复程序确保在这种情况下,内存分配一次并重复使用相同的内存。(错误#75879,错误#20531812)
复制: 如果在使用多线程从站时发生错误,发出
CHANGE MASTER TO
导致 ER_MTS_CHANGE_MASTER_CANT_RUN_WITH_GAPS 错误的语句,然后发出RESET SLAVE
,由于重复 的ER_MTS_CHANGE_MASTER_CANT_RUN_WITH_GAPS 错误而无法更改主站。在这种情况下,运行mysqld的调试版本会 导致意外退出。该修复确保多线程从站的恢复过程避免了这种情况。(错误#75574,错误#20411374)复制: 当使用半同步复制时,当线程数增加到超过某个阈值时性能会下降。为了提高性能,现在只有提交的线程负责删除活动事务节点。所有其他操作都不会触及此活动事务列表。(错误#75570,错误#20574628)
Replication: 当
gtid_executed_compression_period
设置为大于0的数时,每经过指定数量的事务后就有一个线程被唤醒,gtid_executed_compression_period
对mysql.gtid_executed
表进行范围压缩。线程错过信号而未唤醒的可能性很小,因此压缩算法的一次通过将被错过并且表未压缩。该修复可确保线程始终如一地唤醒。(错误#75014,错误#20104307)复制: 使用mysqlbinlog处理大于 1.6GB 的日志事件因内存不足错误而失败。这是由转换长度变量的内部错误引起的。该修复程序升级了长度变量以避免编码和解码函数溢出。(错误#74734,错误#20350989)
复制:在存储过程中 设置
gtid_next
并提交空事务导致错误。这是由于未正确记录空事务以使用设置指定的 GTIDgtid_next
。(错误#74253,错误#19774317)复制:
log_warnings
一些本应在大于 1 时打印的消息 尤其是关于多线程应用程序的信息过于冗长,而且这些信息中的大部分都是非常技术性和开发导向的。该修复可确保不记录这些消息。(错误#74203,错误#19729278)复制: 当使用带有 的多线程从站时
slave_preserve_commit_order=1
,并行应用的某些事务组合可能会导致死锁并停止从站响应。该修复引入了对此类死锁的检查,以便当一个事务需要等待另一个事务释放行锁时,InnoDB
检查是否存在由提交顺序引起的死锁。如果它发现由提交顺序引起的死锁,它会为持有行锁的从属工作者设置一个死锁标志。然后工作人员回滚其事务并再次尝试。(缺陷 #74177,缺陷 #20136704)复制:设置 时
relay_log_recovery
,报告新恢复位置的错误日志条目已扩展为还报告旧中继日志位置。(错误#74089,错误#21305976)复制: 当主服务器 正在复制到从服务器时
--binlog_checksum=none
, 重新启动从服务器的 SQL 线程会导致事件 crc 检查错误。这是因为 在重新启动从属服务器的 SQL 线程后,无法在现有的中继日志中正确找到来自主服务器的请求。该修复确保 正确跳过,并 在重新启动从属 SQL 线程后在现有中继日志中找到正确的。(错误#73806、错误#20644100、错误#76746、错误#20909880)--gtid-mode=ON
--binlog_checksum=crc32
Format_description_log_event
Previous_gtids_log_event
Format_description_log_event
复制: 当 时
gtid_mode=on
,GTID 会自动添加到mysql.gtid_executed
表中。如果手动将 GTID 插入mysql.gtid_executed
表中,然后自动更新插入相同的 GTID,则服务器崩溃。手动插入 GTIDmysql.gtid_executed
是一项不受支持的操作,但此修复可确保服务器在这种情况下不会崩溃。(缺陷 #73601,缺陷 #19451053)复制: 当使用 GTID 时,已经
relay_log_recovery=1
意外停止的多线程从站可能会遇到 重启时在 MTS 模式错误中被杀死时无法执行。该修复确保中继日志恢复过程检查 GTID 是否在使用中。如果正在使用 GTID,则多线程从属恢复过程使用 GTID 协议来填充任何未处理的事务。(错误#73397,错误#19316063)复制: 当
master_info_repository=TABLE
接收线程将接收到的事件信息存储在一个表中时。更新表过程中使用的内存未正确释放,这可能导致内存不足错误。该修复程序可确保在接收线程将事件刷新到中继日志文件后,释放使用的内存。(错误#72885、错误#19390463、错误#69848、错误#20124342)复制: 当两个具有相同
server_uuid
内容的从服务器被配置为从单个主服务器复制时,从服务器的 I/O 线程不断重新连接并生成没有新内容的新中继日志文件。在这种情况下,主机现在会生成一个错误并发送给从机。通过从 master 接收到这个错误,slave I/O 线程不会尝试重新连接,从而避免了这个问题。(错误#72581,错误#18731252)复制: 如果从服务器在从主服务器获取时间戳或服务器 ID、设置等时遇到 ER_NET_READ_INTERRUPTED或 ER_NET_WRITE_INTERRUPTED错误,从服务器
MASTER_HEARTBEAT_PERIOD
的接收线程将停止。该修复确保这些错误被视为瞬态网络错误,并且从接收器线程会尝试在这种情况下自动重新连接到主线程。(错误#71374,错误#18091217)-
复制: 使用mysqlbinlog重播以 结尾的中继日志
GTID_LOG_EVENT
可能导致以下错误:ERROR 1790 (HY000) @@SESSION.GTID_NEXT 不能被拥有 GTID 的客户端更改。客户拥有
UUID:GTID
. 所有权在 COMMIT 或 ROLLBACK 时释放。如果中继日志轮换发生(通过接收器线程重新启动或在发出
ROTATE
命令之后)恰好在写入 之后GTID_LOG_EVENT
,当重放此类中继日志的结尾时ROTATE_EVENT
,它被错误地识别为在事务内,而事务实际上是在 之后开始的GTID_LOG_EVENT
。这导致 mysqlbinlog追加SET @@SESSION.GTID_NEXT='AUTOMATIC'
,导致GTID_NEXT
一条接一条的两条语句。该修复程序确保mysqlbinlogSET @@SESSION.GTID_NEXT='AUTOMATIC'
仅在事务之外且没有先前 的GTID_LOG_EVENT
.同样,使用mysqlbinlog连接和重放包含部分 GTID 事务的中继日志会导致上述错误。
AUTO_POSITION
如果接收器线程在从主服务器传输事务的过程中重新启动,则中继日志可以包含部分 GTID 事务。在重新启动时,slave 再次检索完整的事务。在这种情况下,第一个中继日志包含部分 GTID 事务,第二个中继日志再次包含完整的 GTID 事务。当使用mysqlbinlog连接这样的中继日志时,未正确检测到部分事务,因此ROLLBACK
未正确生成。该修复程序使用第二个中继日志的格式描述事件识别部分 GTID 事务,确保ROLLBACK
正确添加。(错误#70711,错误#17650326) 复制: 复制连接现在发送
program_name
属性 “ mysqld ”,与其他客户端连接的行为一致。此外,添加了一个_client_role
属性并将其设置为 “ binary_log_listener ”,以阐明复制连接的角色,以及_client_replication_channel_name
设置为复制通道名称的属性。同样, mysqlbinlog现在设置_client_role
为 “ binary_log_listener ”。这些变化通过session_connect_attrs
性能模式表。(漏洞 #68782,漏洞 #16555723)在
char
未签名的平台上, mysql_config_editor可能无法检测到失败的操作。受影响的平台包括 ARM 和 PowerPC。(缺陷号 21355630)链接到库的
Rewriter
插件mysys
已经链接到服务器,因此在安装插件时在加载时可用。(漏洞 #21255496)通过启用 AddressSanitizer 发现的内存泄漏已在mysql、mysqlcheck、 mysqldump、mysqlshow、 mysqlslap、mysqltest、 mysql_client_test、 mysql_upgrade和
mysql_install_db
. (错误#21246627,错误#21246842,错误#21246964,错误#21247377,错误#21250562,错误#21250584,错误#21250644,错误#21250876,错误#21250947,错误#21253535,错误#216,错误36,错误36,错误#21,2 #21255860)key_memory_KEY_CACHE
启用 ASAN 时, 多个定义导致编译失败。(缺陷号 21245718)对于调试版本,范围优化器未能正确传播分区修剪期间发生的错误可能会引发断言。(漏洞 #21211492)
失败的
SET PASSWORD
语句ER_MUST_CHANGE_PASSWORD
仍然可以更改表password_last_changed
中一行的列mysql.user
。(缺陷号 21192879)当在语句的两个部分中都使用一个表时,可能会引发优化器提示断言
INSERT INTO ... SELECT
。(缺陷号 21192857)未
create_tmp_table()
检查返回值,这可能导致服务器退出。(缺陷号 21190532)semijoin Duplicate Weedout 策略的成本计算不正确可能会导致服务器退出。(漏洞 #21184091)
-
中的一些 Valgrind 警告
Item_type_holder::join_types()
是虚假的并且已被压制。(漏洞 #21156155)参考资料:此问题是 Bug #19471564 的回归。
优化器提示解析器可以读取释放的内存。(漏洞 #21148405)
对于调试版本,
VIRTUAL
生成的列可以在读取操作期间标记为可写,并导致为分区表引发断言。(漏洞 #21142905)对于调试版本,全文搜索的缺失错误测试可能会导致引发断言。(缺陷号 21140111)
-
外部引用不能用作 的参数
MATCH()
,但服务器未正确检测到它们。现在它确实发生了并引发了一个错误。(缺陷号 21140088)参考资料:另请参阅:Bug #20007383。
EXPLAIN
可能会提出一个断言,试图显示非常大的全文搜索排名值。(缺陷号 21140067)对于调试版本,如果优化器在不合适的情况下尝试使用覆盖索引,则全文搜索可能会引发断言。(缺陷号 21140039)
SHOW STATUS
如果服务器在禁用性能模式的情况下启动,SHOW VARIABLES
则无法生成输出。(缺陷号 21139458)ST_Intersection()
可以产生面和点相交结果,但不能产生线性相交结果。(漏洞 #21109896)ALTER TABLE
在其表达式中使用定义生成列MATCH ... AGAINST
的语句可以引发断言。(缺陷号 21098119)如果无法识别要插入的单个表,服务器可能会提出断言或生成不正确的错误消息以插入到视图中。(缺陷号 21097485)
open_files_limit
可以设置为高于操作系统允许的值。(缺陷号 21074643)InnoDB
如果日志重建或恢复时间过长,则可能会触发systemd超时逻辑 因为这可能需要的时间未知, 所以现在禁用了服务启动或停止期间的systemd超时。(漏洞 #21071740)优化器提示中的表名比较不考虑
lower_case_table_names
系统变量的值。(缺陷号 21056644)调整CMake配置以禁用 Clang 报告的不必要警告,并仅在
-DMYSQL_MAINTAINER_MODE=1
使用时显示它们。(漏洞 #21041451)多次执行
SET
使用子查询的准备好的语句可能会导致服务器退出。(缺陷号 20982756)启用后,如果数据目录中缺少、 和 中的
auto_generate_certs
任何一项,服务器会自动创建 SSL 文件ca.pem
。 现在它仅在所有文件都丢失时才创建文件(与 mysql_ssl_rsa_setup使用的测试相同)。(缺陷号 20963082)server-cert.pem
server-key.pem
performance_schema=OFF
由于架构依赖于它,因此 无法启动使用性能架构支持编译的服务器 ,该sys
架构期望找到性能架构表。性能模式现在在启动期间创建其表,即使禁用也是如此。(缺陷号 20956599)对于
CREATE TABLE ... SELECT
,可以将值分配给目标表中的生成列。(缺陷号 20949226)当 Performance Schema 在负载下读取线程状态变量时,服务器可能会退出。(错误#20927157、错误#20922218、错误#21103103)
CMake支持已针对Clang 3.6
-Wno-unused-local-typedefs
选项-Wno-unused-local-typedef
(缺陷号 20921370)对于调试版本,
XA PREPARE
如果事务至少包含一个更新并且没有InnoDB
更新则引发断言。(缺陷号 20920851)ST_Centroid()
与包含无效多边形的几何集合一起 使用可能会导致服务器退出。(缺陷号 20918881)对于较小的
read_rnd_buffer_size
系统变量值,临时结果的内部缓存可能会失败并导致查询执行失败。(缺陷号 20895852)在访问
events_statements_history
Performance Schema 表期间可能会发生无效的内存指针访问,从而导致服务器退出。(缺陷号 20878306)对于调试版本,传递
EXPORT_SET()
给VALIDATE_PASSWORD_STRENGTH()
可以引发断言。(缺陷号 20863229)失败
FLUSH PRIVILEGES
的语句后跟创建或删除帐户的语句可能会导致服务器退出。(缺陷号 20857652)points_per_circle
函数参数的 大值ST_Buffer_Strategy()
可能会导致使用大量内存。为避免无意中过度使用内存,此参数的最大值现在被限制为新max_points_in_geometry
系统变量的值。此变量的默认值、最小值和最大值分别为 65,536、3 和 1,048,576。(错误#20842030,错误#21212788)对于某些输入,
ST_Buffer()
可以提出断言。(缺陷号 20841874)-
如果服务器使用字符串列作为临时表的键,则可能会引发断言。(缺陷号 20835095)
参考资料:此问题是 Bug #19695490 的回归。
SHOW VARIABLES
互斥量被锁定两次,导致服务器退出。(缺陷号 20788853)ull2dec()
进行了修改以避免 GCC 5 在优化模式下出现问题。(缺陷号 20768820)使用 GCC 5,调试构建因编译器警告而失败。(缺陷号 20768717)
配置
InnoDB
为只读的服务器上的 DDL 操作导致服务器在错误报告期间由于无效的内存访问而退出。(缺陷号 20763179)ALTER TABLE
可能无法阻止生成列定义中的子查询,从而导致服务器退出。(缺陷号 20757211)将结构与生成的列一起使用无效
THD
可能会导致引发断言。(缺陷号 20746926)解析器状态未正确初始化以解析生成的列表达式。(缺陷号 20745142)
对于较大的值
max_digest_length
,性能模式在计算内存需求时可能会遇到溢出错误,从而导致服务器退出。(缺陷号 20738072)通过派生表指定的列
JOIN ... USING
或NATURAL JOIN
从派生表解析的列可以引发断言。(缺陷号 20733540)-
MySQL 5.7.6 限制了 C 客户端库导出的符号列表。其中之一是
mysql_get_parameters
,但它被 DBD::mysql Perl 模块使用。mysql_get_parameters
现在出口。(缺陷号 20686665)参考资料:另请参阅:Bug #18427840、Bug #20476596、Bug #20821550。
操作后的清理
MATCH()
可以写入释放的内存。(缺陷号 20685427)NDB
尝试获取元数据锁时可能会针对未能获取表空间名称提出断言。(缺陷号 20676000)mysqlslap并且
mysql_client_test
默认情况下无法使用 SSL 连接。(缺陷号 20654023)regex
用于 运算符 的 Spencer库REGEXP
在某些情况下可能会发生堆溢出。(缺陷号 20642505)在优化器内部调用后缺少错误检查
find_field_in_tables()
可能会导致引发断言。(缺陷号 20615597)的优化
x IN (SELECT y FROM DUAL WHERE ...)
与 相同x IN (SELECT y FROM DUAL)
,丢失WHERE
子句并导致服务器退出。(缺陷号 20615023)在选项解析期间, mysqlslap 可能会发生缓冲区溢出错误 。(缺陷号 20605441)
对于调试版本,
DROP DATABASE
如果数据库目录中有非数据库文件,则提出断言。(缺陷号 20573701)对于
CREATE TABLE ... SELECT
,如果选定列是依赖于未选定列的生成列,则会发生错误。为处理此问题,目标表不会保留有关所选列是否为生成列的信息。(缺陷号 20566243)密码过期的用户可以执行
ALTER USER
语句而不是分配新密码。(缺陷号 20553132)与每个线程关联的 OpenSSL 错误队列在线程释放时未被释放,从而导致 Valgrind 错误。(漏洞 #20551271)
视图是否可更新的属性是在创建时计算的。如果视图引用了另一个被删除并重新创建的视图,并且引用视图的新定义具有与原始定义不同的可更新性,这可能会影响引用视图的可更新性。不考虑可更新性的这种变化可能会导致提出断言。为避免此问题,服务器现在在读取视图定义时而不是在视图创建时评估可更新性。(缺陷号 20515155)
如果使用错误的线程指针产生错误或警告消息,内置 SQL 函数可能会引发断言或导致服务器退出。(缺陷号 20454979)
-
写入二进制日志的字符串长度计算不正确可能会引发断言或导致服务器退出。(缺陷号 20444737)
参考:这个问题是 Bug #16066637 的回归。
范围优化器将隐藏键部分(
InnoDB
主键)解释为最小边界矩形 (MBR) 索引。此类主键不能用作 MBR,并导致服务器退出。(缺陷 #20430526)如果
WITH CHECK OPTION
视图包含在另一个视图中,有时会忽略视图的 。有关此修复的影响的讨论,请参阅 View WITH CHECK OPTION 子句。(缺陷号 20407961)对于某些类型的几何集合,计算“ within ”或“ contains ” 关系失败。(缺陷号 20379981)
某些选项的长路径名值可能导致堆栈溢出。(缺陷号 20376760)
-
为不使用内置身份验证插件的帐户设置密码可能会导致该帐户无法使用。
此问题的修复涉及更改身份验证插件 API,以将新的 authentication_flags 成员添加到服务器端插件描述符。请参阅 编写服务器端身份验证插件 (缺陷号 20364862)
空间 WKT 导出函数生成了太长的坐标值字符串表示,而不是切换到指数表示法。(缺陷号 20363531)
字符串复制代码中的差一错误可能会导致缓冲区溢出。(缺陷号 20359808)
events_waits_summary_by_instance
性能模式表可能无法返回套接字工具的行 。 (缺陷号 20348824)在某些情况下,
libedit
命令行库可能会在数组边界之外写入并导致客户端程序崩溃。(缺陷号 20318154)具有单个点的无效线串值和具有少于四个点的未闭合多边形可能会导致服务器退出。现在拒绝此类无效值。(缺陷号 20316779)
mysql_config_editor在加密密码时可能会异常退出。(缺陷号 20294225)
损坏的
mylogin.cnf
文件可能导致客户端程序异常退出。(缺陷号 20294148)InnoDB 报告的死锁错误可能导致 InnoDB 内部回滚,而事务在 SQL 层继续进行。(缺陷号 20262654)
当 MySQL 无法解释给定字符集中的字符时,有时不会产生警告。(缺陷号 20238729)
授权表的主机值匹配可能无法使用包含通配符的最具体的值。(缺陷号 20181776)
对于与 yaSSL 链接的 MySQL 发行版,损坏的客户端密钥文件可能会导致客户端退出。(缺陷号 20168526)
-
在子句中使用
SELECT COUNT(DISTINCT)
in 子查询FROM
可能会产生不正确的结果。(缺陷号 20145024)参考:这个问题是 Bug #18766378 的回归。
对于具有大量表的连接查询,服务器可以退出将连接转换为半连接。(缺陷号 20109861)
ALTER TABLE
仅更改索引注释的操作不被视为快速/就地更改。(缺陷号 20106553)在执行
GRANT ... WITH GRANT OPTION
语句之后,执行带有视图的准备好的语句可能会导致服务器退出。(缺陷号 20030284)ADDTIME()
年 >= 10,000 可能会产生超出范围的结果。(漏洞 #19900900)在存储过程中,访问 DDL 之后的视图列或
FLUSH TABLES
过程中的语句可能会导致服务器退出。(漏洞#19897405)从内部查询的相关子查询的子句中引用外部查询的选择列表列
HAVING
应该但没有返回错误,从而导致服务器退出。(漏洞#19823076)-
修正了几个
ST_Envelope()
问题:如果几何的最小边界矩形 (MBR) 退化为 a
Point
或 horizontal 或 verticalLineString
,ST_Envelope()
则返回该值而不是无效的多边形。空几何集合的返回值现在是一个空几何而不是
NULL
.如果几何在几何上无效但具有有效的 WKB 字符串,则返回有效的 MBR 而不是
NULL
.
(错误#19811953,错误#20196720)
对于调试版本,当顶级查询的
HAVING
子句包含引用顶级查询中的列的子查询时,可以引发断言。(漏洞#19811896)GROUP BY
或列ORDER BY
上CHAR(0) NOT NULL
可能导致服务器退出。(漏洞 #19660891)如果分组查询具有包含对聚合函数的引用的非分组子查询,则服务器可能会退出。(漏洞 #19585938)
将损坏的空间数据加载到
MyISAM
表中可能会导致服务器在索引构建期间退出。(漏洞#19573096)一些空间函数将 -0 转换为 0。这不再发生。(漏洞 #19504183)
对于调试版本,某些
UPDATE
语句可能会引发断言。(漏洞 #19055268)半连接的 LooseScan 执行策略无法评估
WHERE
来自外部连接的第一个内部表的行的条件。(漏洞 #18892055)创建临时表并期望将表达式的平坦列表映射到表列的内部过程有时会收到一个不平坦的列表,从而导致引发断言。(漏洞#18745214)
对于
MyISAM
or表,启用该标志MEMORY
时,带有子查询的嵌套连接可能会生成缺少行的结果集 。(漏洞#18717059)optimizer_switch
condition_fanout_filter
对于一些应该单调增加的状态变量,
SHOW GLOBAL STATUS
在一个会话中,当其他并发会话更改用户或断开连接时,它们可能会显示为减少。(漏洞#18591145)在 Windows 上,设置
query_cache_min_res_unit
过大的值可能会导致值为 0 并导致随后的服务器退出。(漏洞#18487951)对于调试版本,
SET
将子查询值分配给变量的语句可能会由于与GROUP BY
orORDER BY
子句相关的不正确清理而引发断言。(漏洞#18486509)validate_password
对于使用 systemd 或 SysV 样式初始化脚本的平台,RPM 包未安装 该插件。(漏洞 #18438833)一些涉及空间关系检查的查询会为
MyISAM
表而不是InnoDB
表产生正确的结果。(漏洞 #18422162)从具有空间索引的空
MyISAM
表中删除行会导致出现有关索引损坏的虚假错误消息。(漏洞#18412756)表的布尔全文搜索
MyISAM
可能会失败。(缺陷号 18279587)尝试同时从大量线程建立 SSL 连接的客户端可能会因分段错误而退出。(漏洞 #18052165)
从表中删除
CSV
可能会导致服务器退出。(漏洞#17902624)对于
HANDLER
扫描空间索引的读取语句,从索引读取的值的类型转换错误可能导致服务器退出。(漏洞 #17846865)带有
IN
左侧为标量子查询的子查询的查询可能会导致服务器退出。(漏洞 #17832047)-
当查询包含以下构造但产生空结果时,服务器可能会在某些情况下退出:
literal-valued row constructor <=> (subquery containing UNION)
(漏洞#17668844)
如果内存分配的所有权在线程之间转移,Performance Schema 内存检测可能会错误地报告线程的内存使用情况。(漏洞 #17473077)
对于调试版本,包括无表子查询在内的语句在计划事件中执行时可能会引发断言。(漏洞 #17435114)
mysql_secure_installation显示 的
--help
消息 没有显示与选项文件处理相关的选项,例如 . (漏洞 #17339009)--defaults-file
性能模式表中的内存使用值
memory_summary_global_by_event_name
可能为负数。(漏洞 #17243619)对于调试版本,由于条件过于严格,可能会在字符集转换代码中引发断言。(漏洞 #13740934)
事件调度程序线程可能被不正确地释放,可能导致服务器退出。(错误#77593、错误#21145277、错误#21053167)
mysql-systemd-start如果
datadir
在/etc/my.cnf
. (错误#77357,错误#21262883)未使用和未维护的
BUILD/build_mccge.sh
脚本已从源代码树中删除。(错误#77336,错误#21246941)ST_IsValid()
MultiPolygon
可以为某些有效参数返回 false 。(错误#77317,错误#21238969)ST_Buffer()
with aLineString
argument 可能会产生一个Polygon
自相交的结果。(错误#77316,错误#21238614)在没有 Performance Schema 的情况下构建 MySQL 时编译失败。(错误#77292,错误#21229433)
更新
setup_consumers
表以设置历史或长期历史消费者对现有线程的历史事件日志记录没有影响。(错误#77278,错误#21223458)SHOW GLOBAL STATUS
Com_
柜台没有反映xxx
SELECT
报表。(错误#77231,错误#21186946)plugin/daemon_example/ChangeLog
删除 了过时且未维护的 文件。(错误#77188,错误#21168681)ST_ConvexHull()
MultiLineString
可能会为参数返回不正确的结果。(错误#77167,错误#21153716)执行准备好的
EXPLAIN
语句可能会导致服务器挂起。(错误#77144,错误#21139522)如果服务器启动时
ssl_cipher
设置了系统变量,则 SSL 证书的自动生成和自动检测不起作用。(错误#77078,错误#21108296)优化器提示查询块名称是标识符,但解析器无法识别有效的标识符名称,例如
123a
在 语法中使用时。(错误#77047,错误#21095608)@
query_block_name
-
对于mysqldump,该
-T
选项应该是该选项的缩写形式--tab
,但被错误地与--debug-info
instead 相关联。(错误#77037,错误#21088793)参考资料:这个问题是 Bug #66854 的回归。
服务器自动生成的 SSL 证书的 CN 值可能超过 64 个字符。在这种情况下,服务器现在省略了 CN 值的一部分,因此长度在 64 个字符以内。(错误#77036,错误#21087159)
_
server_version
mysql_ssl_rsa_setup
写入客户client-cert.pem
端证书文件 的 Common Name 值 不是 . (错误#77035,错误#21087116)MySQL_Server_
suffix
_Auto_Generated_Server_CertificateMySQL_Server_
suffix
_Auto_Generated_Client_Certificate在处理程序关闭连接方法中解除调试同步结构
InnoDB
可能会引发断言。(错误#77005,错误#21069721)如果列上存在
UNIQUE
索引,则对几何列的查询返回错误而不是结果。(错误#77000,错误#21067378)如果视图的多表 (在and 子句中
UPDATE
使用了相同的列)用作准备好的语句,则可能会引发断言。(错误#76962,错误#21045724)SET
JOIN
使用基于行的二进制日志记录,自动删除已达到其生命周期末尾的计划事件可能会引发断言。(错误#76958,错误#21041908)
如果单表子查询的列上有相同的
GROUP BY
andORDER BY
子句UNIQUE NOT NULL
,则结果的排序可能不正确。(错误#76947,错误#21038929)解析器内部使用的
PARSE_GCOL_EXPR
关键字被视为保留字,因此不加引号就不能用作标识符。(错误#76943,错误#21035515)当为系统变量指定的目录
secure_file_priv
不存在时,服务器会产生一个Failed to normalize the argument错误消息。它现在会生成一条消息,指示该目录不存在。mysql_ssl_rsa_setup--datadir
的选项也 出现了同样的问题, 并以同样的方式修复。(错误#76918,错误#21021894)为了记录到二进制日志,服务器可以重写
CREATE USER
和ALTER USER
语句,添加ACCOUNT UNLOCK
原始语句中不存在的子句。这可能会解锁锁定的帐户并导致主从服务器之间存在差异。除非出现在原始陈述中,否则该条款不再被写入。(错误#76911,错误#20996273)INDEX_NAME
Performance Schema 表 的列table_io_waits_summary_by_index_usage
有时会显示不正确的表索引名称,直到它们被使用了一段时间。(错误#76882,错误#20980217)某些CMake选项 的查询重写插件代码编译可能会失败 。(错误#76800,错误#20937654)
-
DO
包含多个表达式的语句可能会导致内存泄漏。错误修复的结果是
DO
以前转换为警告的语句错误现在作为错误返回。(错误#76779、错误#20924241、错误#17479887) 以前,服务器自动创建的 SSL 文件有效期为一年。有效期已延长至十年(与 mysql_ssl_rsa_setup创建的 SSL 文件相同)。(错误#76778,错误#20923066)
show_compatibility_56
如果启用了系统变量,则mysql_upgrade失败 (错误#76757,错误#20914786)未对齐的内存访问可能导致空间操作失败。(错误#76748,错误#20911624)
规范化语句中的标识符有时被引用有时不被引用,这种不一致导致语句摘要和摘要文本匹配失败。这导致了按摘要聚合性能模式的问题。标识符现在被一致引用。(错误#76723,错误#20896539)
Ubuntu 软件包缺少 killall和psmisc的依赖项。(错误#76716,错误#20893836)
SHOW GLOBAL VARIABLES
并从INFORMATION_SCHEMA
GLOBAL_VARIABLES
表中选择导致关于sql_log_bin
系统变量的虚假警告。(错误#76626,错误#20854952)InnoDB
如果缓冲池配置为较大,则mysqld --help --verbose会很慢 现在使用这些选项,不会执行缓冲池分配。(错误#76625,错误#20856397)可以为带有
GROUP BY
子句和表的查询提出断言,优化器为其识别了多个候选索引。(错误#76576,错误#20819199)CREATE USER
写入二进制日志的事件包括新ACCOUNT
语法,即使log_backward_compatible_user_definitions
启用。(缺陷 #76560,缺陷 #20814051)-
服务器拒绝了空
COM_SHUTDOWN
数据包。(错误#76552,错误#20810928)参考资料:此问题是 Bug #14525642 的回归。
对于某些启动错误,服务器可能会
exit()
在关闭插件之前调用,因此无法调用它们的atexit()
处理程序。(错误#76532,错误#20798617)在
sql/handler.h
,HA_ATTACHABLE_TRX_COMPATIABLE
和HA_GENERATED_COLUMNS
中定义了相同的值。(错误#76503,错误#20783191)mysqlimport --use-threads实际上并没有使用多线程。(错误#76480,错误#20772273)
Performance Schema 未检测用于优化器成本模型成本常量缓存的互斥体。该仪器现在可作为
wait/synch/mutex/sql/Cost_constant_cache::LOCK_cost_const
. (缺陷 #76460,缺陷 #20755430)-
这些语句超时问题已得到纠正:
max_statement_time
可以使用大于零的集合和执行某些EXPLAIN
语句的 多个并发会话 来提出断言 。指示语句执行被中断的错误消息引用
max_statement_time
系统变量,即使相关超时是每个语句的值。错误消息现在更加通用。无法
max_statement_time
在服务器启动时设置系统变量。设置
max_statement_time
语句超时可能会导致 Windows 上的内存泄漏或断言失败。试图终止使用可附加事务的语句会导致后续语句无法正常运行,从而导致断言失败。此类语句的
max_statement_time
超时可能会产生类似的结果。
笔记在这些更改之后,
max_statement_time
系统变量被重命名为max_execution_time
.(错误#76446、错误#20788811、错误#76915、错误#21021670、错误#76916、错误#21021754、错误#20705648、错误#20705642、错误#75782、错误#20507804)
参考资料:另请参阅:Bug #77461、Bug #21306646。
尝试创建与
FULLTEXT
索引匹配的外键失败。对于调试版本,尝试创建与SPATIAL
索引匹配的外键会引发断言。(错误#76445,错误#20752436)派生表的
ORDER BY
子句附加到INSERT
语句,但插入表的顺序无关紧要并导致服务器退出。(错误#76436,错误#20753569)失败的
ALTER TABLE
表空间操作(DISCARD TABLESPACE
或者IMPORT TABLESPACE
可能产生不正确的内部表空间状态,导致后续语句失败。(错误 #76424,错误 #20748660)启用
sql_buffer_result
系统变量可能会导致服务器退出多表UPDATE
语句。(错误#76419,错误#20748537)secure_file_priv
显示为NULL
(--secure_file_priv=NULL
正确)和 (不正确) 的值--secure_file_priv=""
。(错误#76401,错误#20741572)Provides
RPM.spec
文件 中 的规则将“ mysql-embedded ”拼错为“ mysql-emdedded ”。(错误#76385,错误#20734434)在启用 AddressSanitizer (ASAN) 的情况下使用 Clang 3.5 或更高版本进行编译会导致该
gen_lex_hash
实用程序在 Clang LeakSanitizer 内存泄漏检查失败时中止。(错误#76351、错误#20720615、错误#22558597、错误#80014)SHOW CREATE TABLE
未正确显示已定义字符集的生成列。(错误#76328,错误#20709462)和 Performance Schema 表 中
Com_stmt_reprepare
缺少状态变量。(错误#76305,错误#20697446)global_status
session_status
如果客户端有密码且服务器未启用常规查询日志,则尝试与 Community Edition 服务器建立 SSL 连接失败。(错误#76286,错误#20693153)
prepared_statements_instances
性能模式表 中未正确跟踪准备好的语句执行统计信息 。(错误#76284,错误#20692556)一些服务器警告提到了现已弃用的 mysql_install_db命令。(错误#76251,错误#20681412)
由于缺少对
lex_token.h
for 的依赖,编译可能会失败sql_yacc.cc.o
。(错误#76235、错误#20678411、错误#27470071、错误#89482)EXPLAIN
对于包含不相关子查询的查询,可以尝试两次具体化子查询,从而引发断言。(错误#76205,错误#20665051)Debian 和 Ubuntu 软件包安装程序在安装期间忽略了运行 mysql_ssl_rsa_setup。(错误#76163,错误#20650118)
与 SSL 证书元数据相关的全局状态变量仅在使用 SSL 建立的会话中可用。(错误#76157,错误#20648276)
当 禁用 SQL 模式时,
mysql_real_escape_string_quote()
C API 函数无法转义反引号 (`
) 字符 。NO_BACKSLASH_ESCAPES
(错误#76146,错误#20645725)显示的消息指示密码已过期并且必须重置引用已弃用的
SET PASSWORD
语句。现在指的是ALTER USER
。(错误#76053,错误#20602572)ALTER USER
命名身份验证插件的语句不检查插件是否有效。(缺陷 #76052,缺陷 #20602525)如果代理用户使被代理用户的密码过期,则当前代理用户会话会受到影响(服务器认为其密码已过期)。再次执行SQL语句,需要代理用户断线重连。(错误#76043,错误#20599280)
mysqld --help --verbose试图执行与显示帮助消息无关的操作:锁定文件、初始化系统文件和检查
plugin
表。(错误#75995,错误#20581228)对于存储过程中的语句,如果执行子查询转换,服务器可能会退出。(错误#75994,错误#20583321)
SET = (
subquery
)用于读取和写入授权表的代码假定这些是
MyISAM
表,并且不处理如果表由不同的存储引擎处理时可能抛出的错误。(错误#75955,错误#20561087)-
通过使用 Boost.Geometry for GIS 算法解决了几个空间函数问题:
ST_Centroid()
带有MultiPolygon
参数可能会产生不正确的结果。多次调用
ST_Intersection()
可能会为某些参数返回不一致的结果。ST_Within()
并且ST_Touches()
可能会为某些参数返回不正确的结果。
(错误#75829、错误#20508769、错误#69425、错误#19270344、错误#69538、错误#19270334)
键查找的非最佳成本估计可能会导致某些查询使用表扫描而不是键查找来执行。(错误#75695,错误#20443863)
max_allowed_packet
对超过字节 的字符串的操作 可能会返回并错误地替换 语句中NULL
的现有值而不是失败。(错误#75539,错误#20376498)UPDATE
NULL
MeCab 全文解析器插件已从 RPM 和 Debian 软件包中删除。(缺陷 #75429,缺陷 #20315007)
EXPLAIN
多表视图中的forINSERT ... SELECT
语句始终显示视图的第一个表作为要插入的表,即使它不是。(缺陷 #75424,缺陷 #20310257)解析器可以在内存不足错误后取消引用空指针。(错误#75372,错误#20294206)
某些查询可能会返回不同的结果,具体取决于系统变量的
semijoin
标志optimizer_switch
是启用还是禁用。(错误#75270,错误#20239912)对于小线程堆栈,具有许多表达式的查询可能会产生线程堆栈溢出错误。(错误#74985,错误#20087571)
在
char
未签名的平台上,服务器无法解析包含非 7 位 ASCII 字符的归类定义。受影响的平台包括 ARM 和 PowerPC。感谢 Alexey Kopytov 提供的补丁。(错误#74891、错误#20928289、错误#21682439)如果服务器是在
explicit_defaults_for_timestamp
启用系统变量的情况下启动的,则将CREATE TABLE
列定义为TIMESTAMP NOT NULL
失败的语句。(错误#74529,错误#19881933)在
threads
Performance Schema 表中,随着线程状态的改变,主线程仪器的PROCESSLIST_STATE
和PROCESSLIST_INFO
值没有改变。thread/sql/main
(错误#74517,错误#19887143)在 OS X 10.10 (Yosemite) 上,mysqld无法自动启动。启动项已被 launchd作业替换,这使自动启动的首选项窗格复选框再次起作用。(错误#74434,错误#19858350)
指定错误的
init_file
系统变量值可能会导致服务器在启动时挂起。(错误#74402,错误#19822257)mysql_install_db没有将日期写入
.mysql_secret
文件。(错误#74006,错误#19659004)外部联接内侧的视图和派生表可能会产生不正确的结果,并且从中选择不可为空的表达式(例如文字)。(错误#73953、错误#20841369、错误#67014、错误#15967464、错误#65936、错误#14358878、错误#67300、错误#15936817、错误#76327、错误#20708288)
如果空间列包含无效的空间数据,则在该列上创建
SPATIAL
索引将无法产生错误。(错误#73871,错误#19593342)当存在大量空 表时,对
INFORMATION_SCHEMA
TABLES
和 表 的某些查询可能会导致内存使用过多。(错误#72322,错误#18592390)COLUMNS
InnoDB
转换为浮点数以与十进制数据进行比较的大整数文字可能会失去精度并产生不正确的结果。(错误#72056、错误#18411494、错误#21139707)
选择连接顺序时,优化器可能会错误地计算表扫描的成本并选择表扫描而不是更有效的
eq_ref
连接。(错误#71584,错误#18194196)--tc-heuristic-recover
由于差一错误 ,服务器错误地解释 了选项值。感谢 Laurynas Biveinis 提供补丁。(错误#70860,错误#19771769)在 OS X 上,该
vio_io_wait()
调用可能导致大量文件描述符(超过FD_SETSIZE
)的堆栈损坏。(缺陷 #69903,缺陷 #17259750)包含
HAVING
基于非确定性函数的子句的查询可能会产生不正确的结果。(缺陷 #69638,缺陷 #17055185)MySQL 无法使用 OpenSSL 0.9.8e 进行编译。(错误#68999,错误#16861371)
对于mysqlslap
--auto-generate-sql-secondary-indexes
, 和的组合--auto-generate-sql
失败了,因为它试图将 36 位 UUID 值插入到VARCHAR(32)
列中。感谢 Tsubasa Tanaka 提供补丁。(错误#55265,错误#11762644)