这是一个里程碑版本,使用风险自负。不支持里程碑版本之间的升级(或从里程碑版本升级到 GA 版本)。重大的开发变更发生在里程碑版本中,您可能会遇到兼容性问题,例如除了运行mysql_upgrade的常规过程之外还需要注意的数据格式更改。例如,您可能会发现有必要在升级前使用mysqldump转储数据并 在升级后重新加载。(无论如何,在升级之前进行备份是一种谨慎的预防措施。)
InnoDB: 新
INFORMATION_SCHEMA
表INNODB_BUFFER_PAGE
、INNODB_BUFFER_PAGE_LRU
和INNODB_BUFFER_POOL_STATS
显示InnoDB
缓冲池信息,用于在大内存或高负载系统上进行调整。
InnoDB: 一个新
INFORMATION_SCHEMA
表,INNODB_METRICS
可让您查询低级InnoDB
性能信息,获取存储引擎操作内部方面的累积计数、平均值和最小/最大值。innodb_monitor_enable
您可以使用、innodb_monitor_disable
、innodb_monitor_reset
和innodb_monitor_reset_all
系统变量 启动、停止和重置指标计数器
InnoDB:
InnoDB
数据字典,包含有关表、列、索引和外键的元数据 ,InnoDB
可用于通过一组INFORMATION_SCHEMA
表进行 SQL 查询。
表现; InnoDB:表 的优化器统计信息
InnoDB
现在可以在服务器重新启动时保持不变,从而产生更稳定的查询性能。您还可以控制为估计每个索引的基数而完成的采样量,从而获得更准确的优化器统计信息。此功能涉及配置选项innodb_analyze_is_persistent
(后来替换为innodb_stats_persistent
)、innodb_stats_persistent_sample_pages
、 和innodb_stats_transient_sample_pages
,以及ANALYZE TABLE
语句。有关详细信息,请参阅配置持久优化器统计参数。
InnoDB: 为了减轻具有大量表的系统上的内存负载,
InnoDB
现在使用 LRU 算法释放与打开的表关联的内存,以选择最长时间未被访问的表。要为打开的表保留更多内存来保存元数据InnoDB
,请增加table_definition_cache
配置选项的值。InnoDB
将此值视为数据字典缓存中打开表实例数的“软限制” 。InnoDB
具有缓存元数据的表的实际数量可能高于为 指定的值table_definition_cache
,因为元数据InnoDB
系统表以及外键关系中的父表和子表永远不会从内存中逐出。有关其他信息,请参阅table_definition_cache
文档。(缺陷 #20877,缺陷 #11745884)
-
优化器现在可以更有效地处理以下形式的查询(和子查询):
SELECT ... FROM single_table ... ORDER BY non_index_column [DESC] LIMIT [M,]N;
这种类型的查询在仅显示较大结果集中的几行的 Web 应用程序中很常见。例如:
SELECT col1, ... FROM t1 ... ORDER BY name LIMIT 10; SELECT col1, ... FROM t1 ... ORDER BY RAND() LIMIT 15;
排序缓冲区的大小为
sort_buffer_size
. 如果行的排序元素N
足够小以适合排序缓冲区(如果指定了M
+N
行M
),服务器可以避免使用合并文件并完全在内存中执行排序。有关详细信息,请参阅LIMIT 查询优化。 优化器实现磁盘扫描多范围读取。当表很大且未存储在存储引擎的缓存中时,使用二级索引上的范围扫描读取行可能会导致对基表的许多随机磁盘访问。通过磁盘扫描多范围读取 (MRR) 优化,MySQL 尝试通过首先仅扫描索引并收集相关行的键来减少范围扫描的随机磁盘访问次数。然后对键进行排序,最后使用主键的顺序从基表中检索行。Disk-sweep MRR 的动机是减少随机磁盘访问的次数,而是实现对基表数据的更顺序扫描。有关详细信息,请参阅 多范围读取优化。
优化器实现索引条件下推 (ICP),这是针对 MySQL 使用索引从表中检索行的情况的优化。如果没有 ICP,存储引擎会遍历索引以定位基表中的行,并将它们返回给 MySQL 服务器,MySQL 服务器会评估这些
WHERE
行的条件。在启用 ICP 的情况下,如果WHERE
仅使用索引中的字段可以评估部分条件,则 MySQL 服务器会推送这部分条件WHERE
条件下降到存储引擎。然后,存储引擎使用索引条目评估推送的索引条件,只有在满足条件时才会读取基行。ICP 可以减少存储引擎必须对基表执行的访问次数以及 MySQL 服务器必须对存储引擎执行的访问次数。有关详细信息,请参阅 索引条件下推优化。
-
Performance Schema 添加了以下内容:
-
Performance Schema 现在有包含仪器生成的表和索引 I/O 等待事件摘要的表
wait/io/table/sql/handler
:table_io_waits_summary_by_table
:聚合表 I/O 等待事件。分组是按表进行的。table_io_waits_summary_by_index_usage
:聚合表索引 I/O 等待事件。分组是按表索引进行的。
这些表中的信息可用于评估应用程序执行的表 I/O 的影响。例如,可以查看使用了哪些表以及使用(或未使用)哪些索引,或者在多个应用程序访问表时识别表上的瓶颈。这些结果可能有助于改变应用程序对数据库发出查询的方式,最大限度地减少应用程序在服务器上的占用空间,并提高应用程序性能和可伸缩性。
新表伴随的变化是该 表现在
events_waits_current
有一个INDEX_NAME
列来标识哪个索引用于生成事件的操作。事件历史表events_waits_history
和 也是如此events_waits_history_long
。 -
Performance Schema 现在有一个
wait/lock/table/sql/handler
在setup_instruments
表中命名的工具,用于检测表锁定等待事件。它与wait/io/table/sql/handler
仪器表 I/O 不同。这使得表 I/O 和表锁的独立检测成为可能。伴随着新工具,性能模式有一个名为的表 ,该表
table_lock_waits_summary_by_table
聚合了新工具生成的表锁等待事件。分组是按表进行的。此表中的信息可用于评估应用程序执行的表锁定的影响。其结果可能有助于改变应用程序对数据库发出查询和使用表锁的方式,以最大限度地减少服务器上的应用程序占用空间并提高应用程序性能和可扩展性。例如,一个应用程序长时间锁定表可能会对其他应用程序产生负面影响;仪器使这一点可见。
要有选择地控制哪些表用于 I/O 和锁定,请使用
setup_objects
表。请参阅 按对象预过滤。
如果从早期版本升级到此 MySQL 版本,则必须运行mysql_upgrade(并重新启动服务器)以将这些更改合并到
performance_schema
数据库中。有关详细信息,请参阅MySQL 性能架构。
-
MySQL 发行版现在包括
auth_socket
一个服务器端身份验证插件,它对通过 Unix 套接字文件从本地主机连接的客户端进行身份验证。该插件使用SO_PEERCRED
socket 选项获取有关运行客户端程序的用户的信息(因此只能在支持此选项的系统上构建)。为了使连接成功,插件需要连接客户端用户的登录名与客户端程序提供的 MySQL 用户名匹配。有关详细信息,请参阅 套接字对等凭据可插入身份验证。(错误#59017、错误#11765993、错误#9411、错误#11745104)MySQL 发行版现在包括
mysql_clear_password
,一个客户端身份验证插件,无需散列或加密即可将密码发送到服务器。虽然这是不安全的,因此应采取适当的预防措施(例如使用 SSL 连接),但该插件与必须能够以明文形式访问原始密码的服务器端插件结合使用时很有用。有关详细信息,请参阅 客户端明文可插入身份验证。
一种新的插件服务,
my_plugin_log_service
使插件能够报告错误并指定错误消息。服务器将消息写入错误日志。请参阅 MySQL 插件服务。
Replication: MySQL Server 添加了写入和读取二进制日志时对校验和的支持。默认情况下,将校验和写入二进制日志是禁用的;可以通过使用该
--binlog-checksum
选项启动服务器来启用它。要使服务器从二进制日志中读取校验和,请在master_verify_checksum
启用系统变量的情况下启动服务器。该--slave-sql-verify-checksum
选项使从站从中继日志中读取校验和。-
复制: MySQL 服务器现在只记录和读回二进制日志中的完整事件或事务。默认情况下,服务器现在记录事件的长度以及事件本身,并使用此信息来验证事件是否已正确写入日志。master 在读取二进制日志时也默认使用这个值来验证事件。
如果启用校验和写入(使用
binlog_checksum
系统变量),主站可以通过启用系统变量来使用它们master_verify_checksum
。从 I/O 线程还验证从主线程接收到的事件。slave_sql_verify_checksum
您可以通过在从站上启用系统变量, 使从站 SQL 线程在从中继日志读取时也使用校验和(如果可用) 。
复制: 现在可以将关于从站连接到主站的信息以及关于从站在中继日志中的执行点的信息写入表而不是文件。将主连接信息和从中继日志信息记录到表中可以彼此独立地完成;这是由
master_info_repository
和relay_log_info_repository
系统变量控制的。当 时master_info_repository=TABLE
,连接信息被记录在 系统数据库slave_master_info
表中mysql
时relay_log_info_repository=TABLE
,中继日志信息被记录到slave_relay_log_info
表中,也在mysql
系统数据库中。
-
复制: 添加了
binlog_row_image
服务器系统变量,可用于为基于行的复制启用行图像控制。这意味着您可以通过仅记录唯一标识行所需的列或在每一行上实际更改的列来潜在地节省 MySQL 服务器的磁盘空间、网络资源和内存使用,而不是记录每个行的所有列和每一行更改事件。此外,您可以使用 “ noblob ”模式,其中记录所有列,除了不需要的BLOB
或TEXT
列。有关详细信息,请参阅 与二进制日志记录一起使用的系统变量。(错误#47200、错误#47303、错误#56917、错误#11755426、错误#11755513、错误#11764116)
-
不兼容的更改: 以下过时的构造已被删除。在显示备选方案的地方,应更新应用程序以使用它们。
和
FLUSH MASTER
语句FLUSH SLAVE
。请改用RESET MASTER
andRESET SLAVE
语句。
重要变更;复制:为mysqld 添加了
binlog_rows_query_log_events
系统变量。启用此变量会导致以基于行的模式记录的服务器将信息行查询日志事件(SQL 语句,用于调试和其他目的)写入二进制日志。MySQL 服务器和 MySQL 5.6.2 及更高版本的 MySQL 程序通常会忽略此类事件,因此它们在读取二进制日志时不会造成问题。 mysqld和mysqlbinlog 以前的 MySQL 版本无法读取二进制日志中的此类事件,并且如果他们尝试这样做会失败。出于这个原因,你永远不应该为 MySQL 5.6.1 或更早的复制从属服务器(或其他阅读器,如 mysqlbinlog)准备日志,并在主服务器上启用此选项。(缺陷 #50935,缺陷 #11758695)表现; InnoDB: 一个单独的
InnoDB
线程 (page_cleaner
) 现在处理以前由InnoDB
主线程完成的脏页的刷新。(缺陷 #11762412,缺陷 #55004)表现; InnoDB: 系统
innodb_purge_threads
变量现在可以设置为大于 1 的值。表现; InnoDB:
InnoDB
控制对内核的并发访问的 内核InnoDB
已拆分为多个 互斥锁和 读写锁,以提高并发性。InnoDB:
InnoDB
可以选择记录所有发生的死锁的详细信息,以帮助进行故障排除和诊断。此功能由innodb_print_all_deadlocks
系统变量控制。(错误 #1784,错误 #17572)-
复制:在具有多个网络接口的 MySQL 复制从属服务器上,现在可以使用 语句 中的选项 设置用于连接到主服务器的接口
MASTER_BIND='
interface
'CHANGE MASTER TO
该选项设置的值可以在
Master_Bind
输出 的列SHOW SLAVE STATUS
或表的Bind
列中看到mysql.slave_master_info
。(错误#25939,错误#11746389) -
Replication: 添加了
log_bin_basename
系统变量,其中包含二进制日志文件的完整文件名和路径。(log_bin
系统变量仅显示是否启用二进制日志记录;log_bin_basename
然而,反映了使用--log-bin
服务器选项设置的名称。)还添加了relay_log_basename
系统变量,它显示中继日志文件的文件名和完整路径。参考资料:另请参阅:Bug #19614、Bug #11745759。
mysql_upgrade 、 mysqlbinlog、mysqlcheck、 mysqlimport、mysqlshow和mysqlslap客户端现在有 和 选项来指定要使用的身份验证插件和插件目录。(漏洞 #58139)
--default-auth
--plugin-dir
-
服务器现在将线程 ID 包含在写入慢速查询日志的行中。在慢速查询日志文件中,线程 ID 是行中的最后一个值。在
mysql.slow_log
日志表中,有一个新thread_id
列。slow_log
如果您是从较早版本升级, 要更新该表,请运行mysql_upgrade并重新启动服务器。请参阅 mysql_upgrade — 检查和升级 MySQL 表。(错误#53630,错误#11761166) 服务器现在在关闭过程中将线程关闭消息写入错误日志。(错误#48388,错误#11756464)
如果
init_file
给出系统变量,服务器现在将指示文件执行开始和结束的消息写入错误日志。(错误#48387,错误#11756463)-
布尔系统变量可以在运行时通过将它们设置为值
ON
或 来启用OFF
,但以前这在服务器启动时不起作用。现在在启动时,可以通过将它们设置为或来启用这些变量,或者通过将它们设置为ON
或TRUE
来禁用它们 。任何其他非数字值均无效。(漏洞 #46393)OFF
FALSE
参考资料:另请参阅:Bug #11754743、Bug #51631。
MySQL 发行版现在包含一个
INFO_SRC
文件,其中包含有关源发行版的信息,例如创建它的 MySQL 版本。MySQL 二进制发行版还包含一个INFO_BIN
文件,该文件包含有关发行版构建方式的信息,例如编译器选项和功能标志。在 RPM 包中,这些文件位于/usr/share/doc/packages/MySQL-server
目录中。在tar.gz
和派生包中,它们位于Docs
分发包解压位置下的目录中。(错误#42969,错误#11751935)多读取范围访问现在基于成本估算,不再用于无益的简单查询。(错误#37576,错误#11748865)
-
以前,对于由于排序问题而中止的查询,服务器会将消息
Sort aborted
写入错误日志。现在服务器写入更多信息以提供更具体的消息,例如:Sort aborted: Out of memory (Needed 24 bytes) Out of sort memory, consider increasing server sort buffer size Sort aborted: Out of sort memory, consider increasing server sort buffer size Sort aborted: Incorrect number of arguments for FUNCTION test.f1; expected 0, got 1
此外,如果服务器是用 启动的
--log-warnings=2
,服务器会写入有关主机、用户和查询的信息。(漏洞 #36022,漏洞 #11748358) -
以前,对于由于排序问题而中止或在排序过程中终止的查询,
KILL
服务器会将消息Sort aborted
写入错误日志。现在服务器写入有关错误原因的更多信息。这些原因包括:临时文件目录中的磁盘空间不足导致无法创建临时文件
内存不足
sort_buffer_size
,无法分配有人在文件排序操作中跑了
KILL
id
服务器在某些查询排序时关闭
由于锁定等待超时或死锁,事务被回滚或中止
意外错误,例如源表甚至临时表已损坏
子查询的处理失败,它也在排序
(缺陷 #30771,缺陷 #11747102)
mysqldump --xml现在显示来自列定义的注释。(错误#13618,错误#11745324)
-
Windows 提供基于 UTF-16LE 的 API,用于读取和写入控制台。MySQL 现在支持
utf16le
UTF-16LE 的字符集,并且 Windows 的 mysql客户端已被修改以通过使用这些 API 提供改进的 Unicode 支持。要利用此更改,您必须在使用兼容的 Unicode 字体的控制台中运行 mysql,并将默认字符集设置为支持与服务器通信的 Unicode 字符集。有关说明,请参阅 Windows 上的 Unicode 支持。
未记录的
SHOW NEW MASTER
语句已被删除,Com_show_new_master
状态变量也已删除。
安全修复:在视图准备期间 预评估
LIKE
谓词可能会导致服务器崩溃。(错误#54568,错误#11762026)-
不相容的变化;复制: 不再可能发出
CREATE TABLE ... SELECT
更改除正在创建的表之外的任何表的语句。任何此类语句都不会执行,而是会因错误而失败。此更改的一个结果是
FOR UPDATE
可能根本不再与 a 的SELECT
部分一起使用CREATE TABLE ... SELECT
。这意味着,在从以前的版本升级之前,您应该重写任何
CREATE TABLE ... SELECT
导致其他表发生变化的语句,以便这些语句不再这样做。此更改还对 MySQL 5.6(或更高版本的从服务器)和运行以前版本的 MySQL 的主服务器之间的复制有影响。在这种情况下,如果
CREATE TABLE ... SELECT
在主服务器上导致其他表更改的语句在主服务器上成功,则该语句在从服务器上仍然会失败,从而导致复制停止。为了防止这种情况发生,您应该在 master 上运行之前重写有问题的语句。(错误#11749792、错误#11745361、错误#39804、错误#55876)参考资料:另请参阅:Bug #47899。
-
Incompatible Change: 当
auto_increment_increment
大于 1 时,达到最大列值的批量插入生成的值可能会环绕而不是产生溢出错误。由于此修复,自动生成的值不再可能等于最大值
BIGINT UNSIGNED
。如果列可以接受,仍然可以手动存储该值。(缺陷 #39828,缺陷 #11749800) -
重要变更;分区: 用作分区函数的日期和时间函数现在检查其操作数的类型;在这种情况下,现在不允许使用错误类型的值。此外, where is a or column 现在完全不允许,因为它的返回值取决于 系统变量的值。(错误#54483,错误#11761948)
EXTRACT(WEEK FROM
col_name
)col_name
DATE
DATETIME
default_week_format
参考资料:另请参阅:Bug #57071、Bug #11764255。
-
重要变更;复制: 该
CHANGE MASTER TO
语句要求 for 的值RELAY_LOG_FILE
是绝对路径,而MASTER_LOG_FILE
路径可以是相对的。不一致的行为通过允许相对路径来解决
RELAY_LOG_FILE
,在这种情况下,路径被假定为相对于从站的数据目录。(错误#12190,错误#11745232) 表现; InnoDB:如果表 的
UPDATE
语句InnoDB
更改了前缀索引覆盖的列,但没有更改值的前缀部分,则表的语句可能会比必要的慢。该修复提高了 MySQL 5.5 及更高版本中 InnoDB 1.1 的性能,以及适用于 MySQL 5.1 的 InnoDB 插件。(缺陷 #58912,缺陷 #11765900)创新数据库;分区: 分区处理程序没有将锁定信息传递给表的存储引擎处理程序。
InnoDB
在使用分区表时,这会导致高争用,从而降低性能 (漏洞 #59013)InnoDB: 此修复引入了一个新的配置选项,
innodb_change_buffer_max_size
它将 更改缓冲区的大小定义为缓冲池大小的百分比 。由于更改缓冲区与缓冲池共享内存空间,因此具有高速率 DML 操作的工作负载可能会导致查询访问的页面比预期更快地从缓冲池中老化。当更改缓冲区超过其最大大小时的 1/2 时,此修复程序还将更多 I/O 容量用于刷新更改缓冲区中的条目。(错误#11766168,错误#59214)InnoDB:列字段中 双引号的存在
COMMENT
可能会阻止正确创建外键约束。(错误#59197,错误#11766154)InnoDB:
information_schema.INNODB_TRX
当其他连接正在运行涉及BLOB
类型 ,无法查询该 (错误#55397,错误#11762763)-
InnoDB: 查询计划中“已检查行”
InnoDB
的返回值 高于预期。值的处理方式不一致。不准确的统计数据可能会结合 触发 “误报”,因为查询实际上没有检查报告的那么多行。NULL
max_join_size
一个新的配置选项
innodb_stats_method
允许您指定NULL
在计算索引统计信息时如何处理值。允许的值为nulls_equal
(默认值)nulls_unequal
和null_ignored
. 这些值的含义与myisam_stats_method
选项的含义相似。(缺陷号 30423) -
分区: 失败
ALTER TABLE ... PARTITION
的语句可能导致内存泄漏。(错误#56380,错误#11763641)参考资料:另请参阅:Bug #46949、Bug #11755209、Bug #56996、Bug #11764187。
复制: 当使用基于语句的日志记录格式时,
INSERT ON DUPLICATE KEY UPDATE
如果INSERT IGNORE
没有插入任何行,则影响未失败的事务表的语句不会写入二进制日志。(使用基于语句的日志记录,应该记录所有成功的语句,无论它们是否导致任何行被更改。)(错误 #59338,错误 #11766266)-
Replication: 以前
STOP SLAVE
先停止slave I/O线程,然后停止slave SQL线程;因此,I/O 线程有可能在仅复制 SQL 线程正在执行的事务的一部分后停止,在这种情况下,如果事务无法安全回滚,则 SQL 线程可能会挂起。现在,
STOP SLAVE
先停止slave SQL线程,再停止I/O线程;这保证了 I/O 线程可以获取 SQL 线程正在执行的事务中的任何剩余事件,以便 SQL 线程可以在无法安全回滚时完成事务。(错误#58546,错误#11765563) -
复制: 仅当默认数据库在事件之间更改时, mysqlbinlog才将语句打印
USE
为了说明这会如何导致问题,假设用户发出以下语句序列:CREATE DATABASE mydb; USE mydb; CREATE TABLE mytable (column_definitions); DROP DATABASE mydb; CREATE DATABASE mydb; USE mydb; CREATE TABLE mytable (column_definitions);
当使用mysqlbinlog 回放时,第二条
CREATE TABLE
语句失败并显示错误:未选择数据库 ,因为第二USE
条语句未回放,因为mydb
从未选择过除此以外的数据库。此修复可确保mysqlbinlog
USE
每当从二进制日志中读取一条语句时都会输出一条 语句。(错误#50914,错误#11758677) 复制:mysqlbinlog 的
--help
文本 现在表明 () 选项输出的伪 SQL 不一定是有效的 SQL,并且不能保证在 MySQL 客户端中逐字工作。(错误#47557,错误#11755743)--verbose
-v
Microsoft Windows: 在 Windows 上,可以在创建对象之前使用线程本地存储中的对象。(缺陷 #55730,缺陷 #11763065)
-
两个未使用的测试文件
storage/ndb/test/sql
包含错误版本的 GNU 宽松通用公共许可证。文件和包含它们的目录已被删除。(漏洞 #11810224)参考资料:另请参阅:Bug #11810156。
COALESCE()
与 字符串一起 使用的查询cp1251
可能会导致 “非法混合排序规则”错误。(缺陷 #60101,缺陷 #11766874)XA COMMIT
如果在 XA 事务已经遇到需要回滚事务的错误(例如死锁)时发出 断言,则会引发断言 。(错误#59986,错误#11766788)comp_err
在某些系统上,由于未初始化的变量 ,调试构建可能会失败。(错误#59906,错误#11766729)将
optimizer_switch
系统变量设置为无效值导致服务器崩溃。(错误#59894,错误#11766719)CHAR
如果服务器是使用 safemutex 支持编译的,则尝试在超过 31 字节 的列上创建空间索引 会导致断言失败。(错误#59888,错误#11766714)聚合后跟子查询可能会产生不正确的结果。(错误#59839,错误#11766675)
Performance Schema 没有更新状态处理程序状态变量,因此
SHOW STATUS LIKE '%handler%'
产生了少计的值。(错误#59799,错误#11766645)在内部,XOR 项目部分表现得像函数,部分表现得像条件。这导致了不一致的处理和崩溃。通过始终将 XOR 项视为函数来解决此问题。(错误#59793,错误#11766642)
传递给的不正确字符集指针
my_strtoll10_mb2()
导致引发断言。(错误#59648,错误#11766519)DES_DECRYPT()
如果参数不是由 . 产生的,则可能会崩溃DES_ENCRYPT()
。(缺陷 #59632,缺陷 #11766505)服务器和客户端并不总是正确协商身份验证插件名称。(错误#59453,错误#11766356)
--autocommit=ON
不起作用(它将全局autocommit
值设置为 0,而不是 1)。(错误#59432,错误#11766339)FIND_IN_SET()
在 MySQL 5.5 中与在 5.1 中的工作方式不同。(缺陷 #59405,缺陷 #11766317)mysqldump没有
ALTER DATABASE
在其输出的语句中引用数据库名称,这可能会导致在重新加载包含破折号的数据库名称时出错。(错误#59398,错误#11766310)如果
filesort
退回到普通的排序/合并,它可能无法正确处理内存。(缺陷 #59331,缺陷 #11766260)聚合值与
TIMESTAMP
值的比较不正确。(缺陷 #59330,缺陷 #11766259)“贪心”查询计划优化器在计算查询成本时没有考虑中间查询结果的大小。当有更快的执行计划可用时,这可能会导致查询执行缓慢。(错误#59326,错误#11766256)
-
以下形式的查询返回了不正确的结果,其中
col_name
结果集中的值被完全替换为NULL
值:SELECT DISTINCT col_name ... ORDER BY col_name DESC;
(缺陷 #59308,缺陷 #11766241)
环境变量被
MYSQL_HOME
忽略。(错误#59280,错误#11766219)SHOW PRIVILEGES
没有显示PROXY
特权行。(错误#59275,错误#11766216)SHOW PROFILE
可能会截断源文件名或无法显示函数名。(错误#59273,错误#11766214)-
对于
DIV
表达式,将结果分配给多个变量可能会导致服务器崩溃。(错误#59241,错误#11766191)参考资料:另请参阅:错误 #8457。
MIN(
在某些情况下可能会返回不正确的结果。(错误#59211,错误#11766165)year_col
)启用索引条件下推后,由于未评估连接中第二个表的部分选择条件,连接可能会产生额外的行。(错误#59186,错误#11766144)
DELETE
如果orUPDATE
语句使用年、月或日部分为零的DATE
or 值,它们可能会失败。DATETIME
(漏洞 #59173)运算符的
ESCAPE
子句LIKE
只允许在执行时计算为常量的表达式,但不会拒绝聚合函数。(错误#59149,错误#11766110)Valgrind 关于未初始化变量的警告已得到纠正。(错误#59145,错误#11766106)
Valgrind 检测到的内存泄漏,其中一些可能导致不正确的查询结果,已得到纠正。(缺陷 #59110,缺陷 #11766075)
mysqlslap无法检查
NULL
返回mysql_store_result()
并在尝试处理结果集时崩溃。(错误#59109,错误#11766074)对文件属性有一个错误的限制
LOAD DATA
。文件位于数据库目录中或全局可读的要求现在是位于数据库目录中或可由用于运行服务器的用户帐户读取。(缺陷 #59085,缺陷 #11766052)SHOW CREATE TRIGGER
如果存在与触发器主题表同名的临时表,则失败。(错误#58996,错误#11765972)和
DEFAULT_CHARSET
CMake 选项不起作用。(错误#58991,错误#11765967)DEFAULT_COLLATION
在子查询中,
UNION
没有引用表(或仅引用DUAL
虚拟表)的 a 不允许ORDER BY
子句。(错误#58970,错误#11765950)OPTIMIZE TABLE
如果操作失败,InnoDB
表可能会引发断言,因为它已被杀死。(错误#58933,错误#11765920)如果
max_allowed_packet
设置大于 16MB,服务器将无法拒绝带有 “ Packet too large ”错误的过大数据包。(错误#58887,错误#11765878)在启用索引条件下推的情况下,当条件中 的列 包含 时,对于
MyISAM
涉及HAVING
和 的表的查询返回不正确的结果。(错误#58838,错误#11765835)LIMIT
WHERE
NULL
索引条件下推访问方法的未初始化变量可能导致服务器崩溃或 Valgrind 警告。(错误#58837,错误#11765834)
NOT IN
当子查询本身返回时,带有包含子句的子查询 的谓词HAVING
可能会检索太多行NULL
。(错误#58818,错误#11765815)对一个
InnoDB
表运行两次查询,首先启用索引条件下推,然后禁用它,可能会产生不同的结果。(错误#58816,错误#11765813)如果存储例程的
DELETE IGNORE
语句失败但由于IGNORE
未报告任何错误,则会引发断言。(错误#58709,错误#11765717)-
WHERE
以下形式的条件评估不正确,可能会返回不正确的结果:WHERE null-valued-const-expression NOT IN (subquery) WHERE null-valued-const-expression IN (subquery) IS UNKNOWN
(错误#58628,错误#11765642)
发出
EXPLAIN EXTENDED
使用条件下推的查询可能会导致 mysqld崩溃。(错误#58553,错误#11765570)使用的
OUTER JOIN
查询可能会返回不正确的结果。(错误#58490,错误#11765513)WHERE
col_name
IS NULL使用文件名没有扩展名 的选项启动服务器会 导致服务器崩溃。(错误#58455,错误#11765482)
--defaults-file=
file_name
与空表的外部联接可能会产生不正确的结果。(错误#58422,错误#11765451)
在调试版本中,
SUBSTRING_INDEX(FORMAT(...), FORMAT(...))
可能会导致服务器崩溃。(错误#58371,错误#11765406)当使用和 选项运行 mysqladmin时,它会进入执行指定命令的无限循环。(缺陷 #58221,缺陷 #11765270)
--sleep
--count
某些字符串操作 SQL 函数使用旨在包含不可变空字符串的共享字符串对象。当一个参数的数据类型错误时,SQL 函数使用此对象
SUBSTRING_INDEX()
返回一个空字符串。如果字符串对象随后被 SQL 函数修改,则会INSERT()
发生未定义的行为。(错误#58165,错误#11765225)条件下推优化可能会下推具有不正确列引用的条件。(错误#58134,错误#11765196)
injector::transaction
不支持回滚。(错误#58082,错误#11765150)解析嵌套的正则表达式可能会导致递归,从而导致堆栈溢出崩溃。(缺陷 #58026,缺陷 #11765099)
-
Bug #25192 的修复导致
load_defaults()
添加了一个参数分隔符,以区分从选项文件加载的选项和命令行上提供的选项,无论应用程序是否需要它。(错误#57953,错误#11765041)参考资料:另请参阅:Bug #25192、Bug #11746296。
如果标准输入是目录,mysql客户端将进入无限循环。(错误#57450,错误#11764598)
-
如果多表更新通过两个别名更新一行,并且第一次更新物理移动了该行,则第二次更新无法定位该行。这导致了不同的错误,具体取决于存储引擎,尽管这些错误没有准确描述问题:
对于
MyISAM
非事务性的,首先执行的更新已执行,但第二个未执行。此外,对于两条相等的多表更新语句,一条成功一条失败取决于记录是否实际移动,这是不一致的。现在,如果这样的更新将通过多个别名更新表,并且执行可能物理移动至少这些别名之一中的行的更新,则这样的更新将返回错误。(错误#57373、错误#11764529、错误#55385、错误#11762751)
SHOW WARNINGS
以下输出EXPLAIN EXTENDED
可能包含不可打印的字符。(错误#57341,错误#11764503)唯一键上的外部联接可能会返回不正确的结果。(错误#57034,错误#11764219)
对于使用包含
GROUP BY
在< ANY()
构造中的子查询的查询,本应返回的行没有返回。(错误#56690,错误#11763918)某些 RPM 安装脚本对数据目录使用了硬编码值,这可能会导致具有非标准数据目录位置的用户安装失败。其他配置值(如 PID 文件名)也是如此。(错误#56581,错误#11763817)
在 FreeBSD 和 OpenBSD 上,服务器错误地检查了系统日期的范围,导致合法值被拒绝。(错误#55755,错误#11763089)
mysql.func
如果一个连接使用FLUSH TABLES WITH READ LOCK
或 锁定了表,LOCK TABLE mysql.func WRITE
而第二个连接尝试创建或删除可加载函数,则当第一个连接尝试使用可加载函数时会发生死锁。(错误#53322,错误#11760878)DISTINCT
字段上的聚合DECIMAL UNSIGNED
可能会触发断言。(错误#52171,错误#11759827)在 FreeBSD 上,如果mysqld被
SIGHUP
信号杀死,它可能会损坏 文件。(缺陷 #51023,缺陷 #11758773)InnoDB
.ibd
AUTO_INCREMENT
如果 -1 被写入多行的语句 插入到列中,则可以引发断言 。(错误#50619,错误#11758417)包含聚合函数但没有
GROUP BY
子句的查询被隐式分组。如果这样的查询还包含一个ORDER BY
子句,优化器可以选择使用临时表来执行排序。这是不必要的,因为隐式分组查询最多返回一行并且不需要排序。(漏洞 #47853)解析器未能正确初始化一些内部对象,这可能导致在语句执行后的清理阶段服务器崩溃。(缺陷 #47511,缺陷 #11755703)
当
CASE ... WHEN
参数具有不同的字符集时,可以将 8 位值引用为utf16
orutf32
值,从而引发断言。(错误#44793,错误#11753363)使用
ExtractValue()
orUpdateXML()
时,如果要读取的 XML 中包含不完整的 XML 注释,则 MySQL 在处理时读取到 XML 字符串的末尾之外,导致服务器崩溃。(缺陷 #44332,缺陷 #11752979)一个线程中使用的位图函数可能会更改其他线程使用的位图,从而引发断言。(缺陷 #43152,缺陷 #11752069)
DATE_ADD()
如果第一个参数是字符串,DATE_SUB()
则返回一个字符串,但错误地返回了一个二进制字符串。现在他们返回一个排序规则为connection_collation
. (错误#31384,错误#11747221)