这是一个里程碑版本,使用风险自负。不支持里程碑版本之间的升级(或从里程碑版本升级到 GA 版本)。重大的开发变更发生在里程碑版本中,您可能会遇到兼容性问题,例如除了运行mysql_upgrade的常规过程之外还需要注意的数据格式更改。例如,您可能会发现有必要在升级前使用mysqldump转储数据并 在升级后重新加载。(无论如何,在升级之前进行备份是一种谨慎的预防措施。)
-
不兼容的更改: MySQL 现在支持该
GET DIAGNOSTICS
语句。GET DIAGNOSTICS
为应用程序提供了一种从诊断区域获取信息的标准化方式,例如先前的 SQL 语句是否产生了异常以及它是什么。请参阅GET DIAGNOSTICS 语句。此外,纠正了条件处理程序处理规则中的几个缺陷,使 MySQL 的行为更像标准 SQL:
块作用域用于确定选择哪个处理程序。以前,存储程序被视为具有处理程序选择的单一范围。
更准确地解决了条件优先级。
诊断区域清理已更改。错误 #55843 导致在激活处理程序之前从诊断区域清除已处理的条件。这使得条件信息在处理程序中不可用。现在条件信息在处理程序中可用,可以用
GET DIAGNOSTICS
语句检查它。如果在处理程序执行期间尚未清除条件信息,则在处理程序退出时清除条件信息。以前,一旦条件发生,处理程序就会被激活。现在它们不会被激活,直到条件发生的语句完成执行,此时选择最合适的处理程序。这对于引发多个条件的语句可能会有所不同,如果在语句执行期间稍后引发的条件比较早的条件具有更高的优先级并且两个条件在相同范围内有处理程序。以前,将选择引发第一个条件的处理程序,即使它的优先级低于其他处理程序。现在选择具有最高优先级的条件的处理程序,
修复了由于处理程序调用堆栈处理不正确而导致服务器退出的问题。
刚刚描述的工作涉及几个条件处理程序错误修复:
该
RETURN
声明没有清除应有的诊断区域。现在诊断区域在执行之前被清除RETURN
。这可以防止嵌套函数调用中的条件错误地传播到外部范围。这也意味着无法从存储函数返回 SQL 警告。此更改不向后兼容,但产生的行为更像标准 SQL。激活SQL
HANDLER
时,已处理的条件会立即从诊断区域中删除。因此,在处理程序中执行的任何 SQL 诊断语句都无法检查激活处理程序的条件。现在条件信息在处理程序中可用。如果存储程序中的同一级别存在多个处理程序,则可能会选择错误的处理程序。现在选择最高优先级条件的处理程序。
如果错误发生在不同处理程序出现在不同嵌套级别的上下文中,则可以选择外部处理程序而不是最内部的处理程序。
有关详细信息,请参阅处理程序的范围规则。(错误#12951117、错误#38806、错误#11749343、错误#55852、错误#11763171、错误#61392、错误#12652873、错误#11660、错误#11745196、错误#48637、错误#11756690)
-
不兼容的更改: MySQL 现在允许 、 和
TIME
, 精度可达微秒(6 位)。要定义包含小数秒部分的列,请使用语法 ,其中is 、 或 ,并且 是小数秒精度。例如:DATETIME
TIMESTAMP
type_name
(fsp
)type_name
TIME
DATETIME
TIMESTAMP
fsp
CREATE TABLE t1 (t TIME(3), dt DATETIME(6));
该
fsp
值(如果给定)必须在 0 到 6 的范围内。值 0 表示没有小数部分。如果省略,则默认精度为 0。(这与标准 SQL 默认值 6 不同,以与以前的 MySQL 版本兼容。)以下各项总结了此更改的含义。另请参阅时间值中的小数秒。
对于
TIME
、DATETIME
和TIMESTAMP
列,新表中的编码和存储要求与以前创建的表中的此类列不同,因为这些类型现在包含小数秒部分。这会影响依赖于行格式的语句的输出,例如CHECKSUM TABLE
.由于 MySQL
DATETIME
和TIMESTAMP
类型的编码和存储要求的这些变化,将使用包含 和 类型的 MySQL 5.6.4 之前的InnoDB
表 导入 MySQL 5.6.4(或更高版本)需要一个变通过程,这在“服务器变化”部分中有描述MySQL 5.6的 变化。ALTER TABLE ... IMPORT TABLESPACE
DATETIME
TIMESTAMP
时态文字的语法现在生成时态值: 、 、 和,以及 ODBC 语法等价物。如果指定,结果值包括尾随的小数秒部分。以前,时间类型关键字被忽略,这些构造产生字符串值。请参阅 标准 SQL 和 ODBC 日期和时间文字
DATE '
str
'TIME '
str
'TIMESTAMP '
str
'采用时间参数的函数接受带有小数秒的值。时间函数的返回值包括适当的小数秒。
INFORMATION_SCHEMA
、COLUMNS
和 三个表现PARAMETERS
在ROUTINES
有一个DATETIME_PRECISION
列。它的值是 、 和 列以及其他数据类型的TIME
小DATETIME
数秒TIMESTAMP
精度NULL
。-
C API 可容纳小数秒,如下所示:
在某些情况下,以前接受的语法可能会产生不同的结果。以下各项指示可能需要更改现有代码以避免出现问题的位置:
一些表达式产生的结果与以前的结果不同。示例:
timestamp
系统变量返回一个包含微秒小数部分而不是整数值的值。返回包含当前时间的结果的函数(例如CURTIME()
、SYSDATE()
或UTC_TIMESTAMP()
)将参数解释为一个fsp
值,并且返回值包括那么多数字的小数秒部分。以前,这些函数允许参数但忽略它。TIME
DATETIME
通过将时间添加到当前日期来转换为值 。'00:00:00'
(这意味着如果时间值超出从到 的范围,则结果的日期部分不同于当前日期'23:59:59'
。)以前,将TIME
值 转换DATETIME
为不可靠。请参阅 日期和时间类型之间的转换。TIMESTAMP(
在旧的 MySQL 版本中是允许的,但N
)N
它是显示宽度而不是小数秒精度。在 MySQL 5.5.3 中删除了对这种行为的支持,因此合理更新的应用程序不应受到此问题的影响。否则,必须重写代码。
笔记从理解小数秒的主服务器复制到不理解小数秒的旧从服务器可能会出现问题:
对于
CREATE TABLE
包含fsp
值大于 0 的列的语句,复制将因解析器错误而失败。fsp
使用值为 0 的时间数据类型的 语句将适用于基于语句的日志记录,但不适用于基于行的日志记录。在后一种情况下,数据类型在主机上的二进制格式和类型代码与从机上的不同。某些表达式结果在主从上会有所不同。例如,
timestamp
如前所述,涉及系统变量的表达式或返回当前时间的函数具有不同的结果。
(缺陷 #8523,缺陷 #11745064)
MySQL 现在支持表
FULLTEXT
的索引InnoDB
。FULLTEXT
核心语法与早期版本的功能非常相似,带有CREATE TABLE
andCREATE INDEX
语句以及MATCH() AGAINST()
语句中的子句SELECT
。新的@
运算符允许邻近搜索文档中彼此靠近的术语。详细搜索处理由一组新的配置选项控制:innodb_ft_enable_stopword
、innodb_ft_server_stopword_table
、innodb_ft_user_stopword_table
、innodb_ft_cache_size
、innodb_ft_min_token_size
和innodb_ft_max_token_size
。您可以通过查询新表 来监控InnoDB
全文搜索系统的 工作:INFORMATION_SCHEMA
innodb_ft_default_stopword
innodb_ft_index_table
,innodb_ft_index_cache
,innodb_ft_config
,innodb_ft_deleted
和innodb_ft_being_deleted
。
-
实施了这些查询优化器改进:
-
优化器检测并优化掉 // / 子查询中这些无用
IN
的ALL
查询 部分SOME
:EXISTS
DISTINCT
GROUP BY
, 如果没有HAVING
子句也没有聚合函数ORDER BY
,这没有效果,因为LIMIT
这些子查询不支持
-
-
Performance Schema 添加了以下内容:
-
Performance Schema 现在允许在服务器启动时进行仪器和消费者配置,以前只能在运行时使用 和 表
UPDATE
的语句进行配置 。进行此更改是因为运行时配置为时已晚,无法禁用在服务器启动期间已初始化的工具。例如, 互斥量在服务器启动期间初始化一次,因此尝试在运行时禁用相应的工具没有任何效果。setup_instruments
setup_consumers
wait/sync/mutex/sql/LOCK_open
要在服务器启动时控制仪器,请使用以下形式的选项:
--performance-schema-instrument='instrument_name=value'
这里,
instrument_name
是一个仪器名称,例如wait/sync/mutex/sql/LOCK_open
,value
是以下值之一:off
,false
, 或0
: 禁用仪器on
,true
, 或1
: 启用仪器并计时counted
:启用并计算(而不是时间)仪器
每个
--performance-schema-instrument
选项只能指定一个仪器名称,但可以给出该选项的多个实例以配置多个仪器。此外,仪器名称中允许使用模式来配置与模式匹配的仪器。要将所有条件同步工具配置为启用和计数,请使用此选项:--performance-schema-instrument='wait/synch/cond/%=counted'
要禁用所有仪器,请使用此选项:
--performance-schema-instrument='%=off'
较长的乐器名称字符串优先于较短的模式名称,无论顺序如何。有关指定模式以选择工具的信息,请参阅 命名工具或过滤操作的消费者。
无法识别的仪器名称将被忽略。稍后安装的插件可能会创建仪器,此时名称会被识别和配置。
要在服务器启动时控制消费者,请使用以下形式的选项:
--performance-schema-consumer_consumer_name=value
这里,
consumer_name
是消费者名称,例如events_waits_history
,value
是以下值之一:off
,false
, or0
:不为消费者收集事件on
,true
, or1
: 为消费者收集事件
例如,要启用
events_waits_history
消费者,请使用此选项:--performance-schema-consumer-events-waits-history=on
可以通过检查该
setup_consumers
表找到允许的消费者名称。不允许使用图案。除了之前在服务器启动时允许配置的更改外,默认的仪器和消费者配置也发生了变化。以前,默认情况下启用所有仪器和消费者。现在,除语句、I/O 和空闲仪器外,其他仪器都被禁用。除了全局、线程和当前语句消费者外,消费者被禁用。这些更改会产生一个低开销的默认配置。
-
具有
EVENT_ID
列的表现在也具有END_EVENT_ID
支持确定嵌套事件关系的列:和以前一样,
EVENT_ID
在事件开始时填充线程当前事件计数器。此外,END_EVENT_ID
直到NULL
事件结束,此时它被设置为新线程的当前事件计数器。这允许使用以下表达式确定关系“事件 B 包含在事件 A 中”,而不必使用以下每个包含关系NESTING_EVENT_ID
:A.EVENT_ID <= B.EVENT_ID AND B.END_EVENT_ID <= A.END_EVENT_ID
-
Performance Schema 在表和 表 两个地方聚合了文件 I/O 操作 。可以 使用列将 表连接到 。但是,不可能对 表 和 表做同样的事情,因为前者 用作实例标识符而后者用作
events_waits_summary_
xxx
file_summary_
xxx
events_waits_summary_global_by_event_name
file_summary_by_event_name
EVENT_NAME
events_waits_summary_by_instance
file_summary_by_instance
OBJECT_INSTANCE_BEGIN
FILE_NAME
. 这意味着可以同时获得文件 I/O 延迟和每个文件的使用情况,但是当存在不止一种形式的文件(例如多个重做日志、表文件等)时,无法正确地将延迟与使用相关联.为了解决这个问题,该
file_summary_by_instance
表现在有一OBJECT_INSTANCE_BEGIN
列。此外,file_summary_by_instance
和file_summary_by_event_name
都有额外的聚合列(例如计时器等待信息),这在许多情况下可以在根本不需要连接的情况下获得所需的摘要信息。
如果从早期版本升级到此 MySQL 版本,则必须运行mysql_upgrade(并重新启动服务器)以将这些更改合并到
performance_schema
数据库中。有关详细信息,请参阅MySQL 性能架构。
-
表现; InnoDB: 新的优化适用于只读
InnoDB
事务。有关详细信息,请参阅 优化 InnoDB 只读事务。新的优化使 自动提交比以前更适用于InnoDB
查询,作为一种表示事务是只读的方式,因为它是单语句SELECT
。表现; InnoDB: 您现在可以将未压缩表的
InnoDB
页面大小设置为 8KB 或 4KB,以替代默认的 16KB。此设置由innodb_page_size
配置选项控制。您在创建 MySQL 实例时指定大小。一个实例中的所有InnoDB
表空间共享相同的页面大小。较小的页面大小有助于避免某些工作负载和存储设备组合的冗余或低效 I/O,尤其是 块大小较小的SSD设备。复制: 以前,复制从服务器只能通过使用本机身份验证的主帐户连接到主服务器。如果所需的客户端插件安装在从属
plugin_dir
系统变量命名的目录中的从属侧,现在复制从属也可以通过使用非本机身份验证的主帐户连接。(漏洞 #12897501)优化器跟踪功能现在可以跟踪服务器在语句执行期间创建的临时表。(漏洞 #13400713)
通过为元数据锁定对象建立缓存,改进了 Windows XP 系统上元数据锁定操作的性能。这允许服务器避免在 XP 上创建和销毁同步对象的昂贵操作。一个新的系统变量,
metadata_locks_cache_size
允许控制缓存的大小。默认大小为 1024。(缺陷 #12695572)Advanced GPL
从RPM 包 升级到Advanced
RPM 包不起作用。现在在 Linux 上可以使用rpm -U将任何已安装的 MySQL 产品替换为任何其他相同版本系列的产品。没有必要先用 rpm -e删除旧的产品。(漏洞 #11886309)make_win_bin_dist脚本不再使用,并已从 MySQL 发行版和手册中删除。(漏洞 #58241)
MEMORY
表的创建时间现在可以在表的列和输出的CREATE_TIME
列 中使用 。(错误#51655,错误#11759349)INFORMATION_SCHEMA.TABLES
Create_time
SHOW TABLE STATUS
以前,MySQL 服务器 5.1 及更高版本拒绝打开
ARCHIVE
在 5.0 中创建的表,因为打开它们会导致服务器崩溃。服务器现在可以打开 5.0ARCHIVE
表,并将REPAIR TABLE
它们更新为 5.6 中使用的格式。不过,推荐的升级流程还是升级前先转储5.0ARCHIVE
表,升级后重新加载。(错误#48633,错误#11756687)仅涉及错误代码的错误消息现在也包括相应的错误描述。(错误#48348,错误#11756433)
-
MySQL 代码库已更改为允许使用 C++ 标准库并启用异常和运行时类型信息 (RTTI)。此更改具有以下含义:
库和可执行文件依赖于一些 C++ 标准库。在 Linux 上,以前不是这种情况。在 Solaris 上,默认依赖项已从默认库更改为
libstlport
,现在包含在二进制分发版中,供系统没有它的用户使用。和选项不再用于构建插件,例如存储引擎
-fno-rtti
。-fno-exceptions
编写自己的插件的用户如果使用的是 tem,则应省略这些选项。从源代码编译的 C++ 用户应该设置
CXX
为 C++ 编译器而不是 C 编译器。例如,使用g++而不是gcc。这包括服务器以及客户端程序。mysql_config现在有一个
--cxxflags
选项。这类似于--cflags
选项,但生成适合 C++ 编译器而不是 C 编译器的标志。可以使用标准库功能在 C++ 中编写可加载函数。
-
安全增强;复制: 语句
START SLAVE
现在接受USER
和PASSWORD
选项。默认使用MySQL原生认证,用户名和密码存储在master.info
仓库中。可以通过在发布时另外指定身份验证插件DEFAULT_AUTH
) 和位置 (来覆盖此行为。.PLUGIN_DIR
START SLAVE
作为此更改的一部分,现在会在以下情况下发出警告:
如果 使用未加密的连接执行
START SLAVE USER="..." PASSWORD="..."
或 ,则会生成警告消息“在没有 SSL/TLS 的情况下以纯文本形式发送密码是极其不安全的”( )。CHANGE MASTER TO MASTER_USER="..." MASTER_PASSWORD="..."
ER_INSECURE_PLAIN_TEXT
如果在执行过程中将用户名和密码存储在存储库中或从
master.info
存储库中读取,CHANGE MASTER TO
则会在错误日志中打印一条警告消息: Storing MySQL user name or password information in the master.info repository is not secure and therefore不推荐 (ER_INSECURE_CHANGE_MASTER
)。
笔记运行
START SLAVE
语句的文本,包括 和 的值USER
,PASSWORD
可以在并发SHOW PROCESSLIST
语句的输出中看到。CHANGE MASTER TO
语句 的完整文本也对 可见SHOW PROCESSLIST
。另请参阅可插入身份验证。(漏洞 #13083642)
-
不相容的变化;复制: 以下列表中的语句现在标记为对基于语句的复制不安全。这是因为这些语句中的每一个都取决于
SELECT
不能总是确定其顺序的语句的结果。使用STATEMENT
日志记录模式时,二进制日志中会针对这些语句中的任何一个发出警告;使用MIXED
日志记录模式时,使用基于行的格式记录语句。升级时,您应该注意在您的应用程序中使用这些语句,请记住,插入或替换从 a 获取的行的语句
SELECT
在使用基于行的格式记录时占用的二进制日志空间是使用基于行的格式记录时的许多倍仅记录语句本身。根据任何此类语句选择和插入(或替换)的行的数量和大小,将这些语句的日志记录从基于语句切换为基于行后,二进制日志的大小差异可能有几个数量级规模。请参阅基于语句和基于行的复制的优点和缺点。(缺陷 #11758262,缺陷 #50439) Incompatible Change: 以前, “ Aborted connection ”错误是根据会话值写入错误日志的
log_warnings
,这允许具有最小权限的用户导致许多消息被写入日志,除非受到MAX_CONNECTIONS_PER_HOUR
资源限制的限制。现在,此日志记录基于全局log_warnings
变量。会话变量没有剩余用途log_warnings
,因此它已被删除并且该变量现在只有一个全局值。(错误#53466,错误#11761014)-
重要变更;InnoDB: 如果由于底层文件重命名系统调用的错误代码导致表
ALTER TABLE
语句失败可能会丢失对表文件的跟踪 。此问题仅在 启用配置选项时发生,并且在经过数千次重试尝试后低级错误仍然存在。在 MySQL 5.1 中,此问题适用于 InnoDB 插件,但不适用于内置的 InnoDB 存储引擎。InnoDB
InnoDB
.ibd
innodb_file_per_table
例如,如果您遇到如下错误:
mysql> ALTER TABLE sb2 ADD COLUMN d2 INT; ERROR 1025 (HY000): Error on rename of './sbtest/#sql-1eb9_1' to './sbtest/sb2' (errno: -1)
您可以通过从具有相同架构的
#sql*
表中复制文件来访问该表。.frm
用于文件的表名将.frm
在`sbtest.#mysql50##sql-1eb9_1`
前面的示例中。(缺陷 #12884631,缺陷 #62146) 重要变更;复制: 在语句中设置空用户会
CHANGE MASTER TO
导致无效的内部结果,并且不再被允许。在未设置的情况下尝试使用MASTER_USER=''
或设置MASTER_PASSWORD
会MASTER_USER
导致语句失败并出现错误。(漏洞 #13427949)-
表现; InnoDB:在关闭期间或使用以下语句关闭 AHI 时 ,取消分配
InnoDB
自适应哈希索引的过程变得更快:SET GLOBAL innodb_adaptive_hash_index=OFF;
(缺陷 #13006367,缺陷 #62487)
表现; InnoDB: 此修复提高了
InnoDB
缓冲池操作的检测代码的性能。(缺陷 #12950803,缺陷 #62294)-
表现; InnoDB:此修复提高了在启用该选项 对 表
InnoDB
执行 a 时 释放缓冲池中页面的效率和并发性DROP TABLE
InnoDB
innodb_file_per_table
对于具有大型缓冲池的系统,此更改最为明显。在 drop 操作期间,缓冲池内存结构的一次遍历从 LRU 列表(整个缓冲池)更改为刷新列表(一个小得多的结构)。LRU 扫描减少了,但没有完全消除。缓冲池互斥量也会定期释放,因此如果删除操作花费大量时间,其他线程可以并发进行。(缺陷 #11759044,缺陷 #51325)
InnoDB:在为 DML 操作(尤其是 语句)
InnoDB
执行大量更改缓冲的服务器上, 可能会发生内部死锁DELETE
(漏洞 #13340047)InnoDB:修复了影响4.6.1
InnoDB
源代码 的编译问题gcc
受影响的InnoDB
源文件是btr/btr0cur.c
. (漏洞 #13116045)InnoDB: 查询
INFORMATION_SCHEMA.INNODB_SYS_TABLESTATS
表可能会导致服务器因断言错误而停止,仅在调试版本中。(漏洞 #12960058)InnoDB: 使用设置构建时出现 Valgrind 错误
innodb_checksum_algorithm=innodb
并innodb_checksum_algorithm=crc32
已修复。(漏洞 #12939557)InnoDB:
InnoDB
从与迷你交易相关 的内部代码中删除了未使用的功能 (缺陷 #12626794,缺陷 #61240)InnoDB: 使用二级索引的查找可能会在一组特定条件下给出不正确的匹配。条件涉及在列前缀上定义的索引,用于存储在索引页之外的 BLOB 或其他长列,以及使用 Barracuda 文件格式的表。(错误#12601439,错误#12543666)
InnoDB:表 的
UPDATE
语句InnoDB
可能会挂起。该问题影响使用Barracuda 文件格式并在 列前缀上具有多个索引的表。撤消日志记录的大小可能超过页面大小,即使列前缀的总大小小于页面大小(通常为 16KB)。在 MySQL 5.5 及更高版本中,现在使用新代码报告此错误ER_UNDO_RECORD_TOO_BIG
。在带有InnoDB Plugin的MySQL 5.1中,使用现有代码报该错误ER_TOO_BIG_ROWSIZE
。(漏洞 #12547647)InnoDB: 此修复纠正了 MySQL 服务器可能挂起或中止并显示
long semaphore wait
消息的情况。(这与在声明期间出现这些症状时不同CHECK TABLE
。)(错误 #11766591,错误 #59733)InnoDB: 从并发线程为表 发出
INSERT...ON DUPLICATE KEY
语句可能会导致死锁,尤其是表单。 发出多个语句也可能触发该问题 该修复避免了由多个事务访问同一行而导致的死锁。当多个事务以不一致的顺序同时插入和更新多行时,仍然可能发生死锁;这些类型的死锁需要在应用程序端进行标准错误处理,重新尝试事务。(错误#11759688、错误#52020、错误#12842206)InnoDB
INSERT...ON DUPLICATE KEY UPDATE
INSERT IGNORE
分区:
CHECKSUM TABLE
为分区表返回 0,除非该语句与该EXTENDED
选项一起使用。(缺陷 #11933226,缺陷 #60681)分区:
ER_TABLE_CANT_HANDLE_FT
尝试对分区表使用索引时出现 错误 1214 (FULLTEXT
显示误导性文本The used table type doesn't support FULLTEXT indexes具有误导性,已替换为错误 1752 (ER_FULLTEXT_NOT_SUPPORTED_WITH_PARTITIONING
),后者显示更准确的FULLTEXT分区表不支持索引。(缺陷 #11763825,缺陷 #56590)分区: 使用
ALTER TABLE
从有效MyISAM
表中删除分区可能会损坏它。(错误#52599,错误#11760213)复制: 为系统变量设置的值
slave_parallel_workers
并不总是正确的;在这种情况下,使用随机值。(漏洞 #13334470)复制:
LOAD DATA
在MyISAM
的插入后触发器的 执行InnoDB
导致基于语句的多线程复制中止并出现错误 1742(无法在并行模式下执行当前事件组)。(漏洞 #12982188)复制: 为了印刷错误和清晰度,修改了一些警告和信息性消息。(错误#12947248,错误#12978113)
复制: 当一个包含大量行的语句应用到一个不包含主键的从表上时,可能需要相当长的时间来查找和更改所有要更改的行。如果使用基于行的复制复制的给定语句的执行时间超过 60 秒,当前修复通过在错误日志中打印一条消息来帮助诊断此问题。
log_warnings
必须大于 1 才能将此消息打印到错误日志中。(缺陷 #11760927,缺陷 #53375)-
复制: mysqlbinlog
--hexdump
以两种方式错误地打印了十六进制转储的最后一行:如果最后一行的长度是八个字节,则将前一行的末尾复制到最后一行的末尾,将最后一行填充到全长。
如果最后一行的长度小于 16 个字节,则其文本表示与前几行的文本表示不对齐。
(错误#11747887,错误#34386)
-
复制: 在主服务器上的二进制日志磁盘变满后,复制主服务器可以将损坏的事件发送给从服务器。为更正此问题,主转储线程现在仅将完整事件推送到从属 I/O 线程。此外,主站在发现不完整事件时发送给从站的错误文本现在指出不完整事件可能是由于主站磁盘空间不足引起的,并提供了第一个和最后一个事件字节的坐标读。(错误#11747416,错误#32228)
参考资料:另请参阅:Bug #64035、Bug #13593869。
复制: 当源数据库 ( ) 的名称仅包含一个字符 时,无法正常工作(缺陷 #34332,缺陷 #11747866)
--replicate-rewrite-db=
from_name
->to_name
from_name
不正确的
InnoDB
断言可能会导致服务器停止。此问题仅影响调试版本。断言引用了源文件btr0pcur.ic
和变量cursor->pos_state
。(漏洞 #13358468)包含超过 64 列的派生表导致服务器崩溃。(漏洞 #13354889)
在
InnoDB
启用更改缓冲并innodb_page_size
设置为 8K 或 4K 页面大小的情况下,UPDATE
如果要更新的列包含的值超过页面大小的 1/8,语句可能会失败。(漏洞 #13336585)thd->current_utime()
即使最终没有写入日志条目, 写入慢速日志也会调用 ,从而不必要地降低性能。(漏洞 #13326965)DBL_MAX
返回 舍入DBL_MAX
,而不是“inf”。(漏洞 #13261955)对于物化临时表,缺少键长度检查可能会导致不正确的查询结果。(漏洞 #13261277)
检查每个存储的程序指令的访问权限,即使该指令不使用表,也会导致性能下降。(漏洞 #13251277)
的错误消息
ER_EVENT_CANNOT_ALTER_IN_THE_PAST
不正确。(漏洞 #13247871)在表打开过程中,内存被分配并随后被释放,这是需要视图加载的,即使对于不使用视图的语句也是如此。这些不必要的分配和空闲操作不再做。(漏洞 #13116518)
OUTER JOIN
如果子查询引用另一个 的列,则子 查询可能会返回不正确的结果SELECT
。(漏洞 #13068506)写入
MyISAM
临时表可能包括未初始化的数据,这些数据可能包含敏感信息。现在只复制包含初始化数据的字节,这也提高了性能。(漏洞 #12997905)性能模式在错误的语句中嵌套了一些网络 I/O 事件。(漏洞 #12981100)
mysql_plugin在某些情况下错误处理了
--plugin-ini
、--mysqld
和--my-print-defaults
(漏洞 #12968815)mysql_plugin从失败的服务器引导执行中返回了错误的错误代码。(漏洞 #12968567)
零与二进制的内部转换和返回可能会产生精度不正确的结果。(漏洞 #12911710)
由操作生成的 Valgrind 警告
filesort
已修复。(漏洞 #12856915)如果外部值列表包含 ,到子查询的转换可能会产生不正确的
IN
结果。(漏洞 #12838171)EXISTS
NULL
启用索引条件下推后,
STRAIGHT_JOIN
查询可能会产生不正确的结果。(错误#12822678,错误#12724899)某些数字的结果
ROUND()
不正确。(漏洞 #12744991)IN
和EXISTS
子查询与DISTINCT
和ORDER BY
可能返回不正确的结果。(漏洞 #12709738)之后由于无法清理而发生内存泄漏
QUICK_INDEX_MERGE_SELECT/Unique
。(错误#12694872,错误#14542543)-
对与 MySQL 发行版捆绑在一起的库进行了多项改进
libedit
,并且可用于 MySQL 支持的所有平台,Windows 除外。导航键不适用于 UTF-8 输入。
单词导航和删除操作不适用于带有西里尔字符的 UTF-8 输入。
非拉丁字符在 UTF-8 输入的覆盖模式下被损坏。
长查询导致语句历史文件损坏。
Alt 键导致历史操作失败。
(错误#12605400、错误#12613725、错误#12618092、错误#12624155、错误#12617651、错误#12605388)
SELECT SQL_BUFFER_RESULT
GROUP BY
如果一个子句被优化掉,查询结果包含太多行。(漏洞 #12578908)decimal_round()
处理长数字字符串时可能导致服务器退出。(漏洞 #12563865)-
mysqldump
--all-databases
没有转储复制日志表。(只有在调用mysqldump时明确命名它们并使用该--master-data
选项 才能转储它们由于修复了这个问题,现在可以随时在复制日志表上执行需要读锁的语句,而只要复制正在进行,就不允许在其中一个或两个表上执行任何需要写锁的语句. 有关详细信息,请参阅 中继日志和复制元数据存储库。(缺陷 #12402875,缺陷 #60902)
客户端-服务器协议现在让客户端将身份验证数据作为长度编码字符串发送,以便可以发送超过 256 字节的数据。这是使用
CLIENT_PLUGIN_AUTH_LENENC_CLIENT_DATA
客户端功能完成的。(漏洞 #11878962)mysqld_safe没有正确检查已经运行的mysqld实例。(漏洞 #11878394)
SUM(DISTINCT)
错误地将DATE
、DATETIME
、TIME
和TIMESTAMP
参数转换为YEAR
. (错误#73543,错误#19427648)如果选择了索引条件下推访问然后又放弃了,一些变量没有被清除,导致查询结果不正确。(漏洞 #62533)
CMake配置检查没有正确测试 C 编译器是否支持该 关键字
inline
。(缺陷 #61708,缺陷 #12711108)对于
lower_case_table_names
1 或 2 的值和具有混合大小写名称的数据库,使用包括数据库名称的完全限定名称调用存储函数失败。(缺陷 #60347,缺陷 #11840395)mysql_upgrade在使用或 选项没有升级系统表或创建
mysql_upgrade_info
文件 (缺陷 #60223,缺陷 #11827359)--write-binlog
--skip-write-binlog
多表
UPDATE
语句需要对视图的UPDATE
特权,只有在使用合并算法处理视图时才读取该特权。(错误#59957,错误#11766767)当连接操作包含视图时,优化器有时无法将视图的
WHERE
子句与连接中的第一个表或视图相关联,而这可能会导致查询效率降低。(错误#59696,错误#11766559)从使用已删除的可加载函数的视图中进行选择的视图中进行选择时,会引发断言。(错误#59546,错误#11766440)
mysql_install_db 的帮助消息并未表明它支持
--defaults-file
,--defaults-extra-file
和--no-defaults
选项。(错误#58898,错误#11765888)mysql_install_db在其错误消息之一中打印了
--skip-grant-tables
服务器选项--skip-grant
(错误#58534,错误#11765553)当整个键集适合内存时,也会引发旨在检测零长度排序键的断言。(缺陷 #58200,缺陷 #11765254)
在优化期间,
ZEROFILL
值可能会转换为字符串常量。但是,CASE
表达式在规划阶段后不处理数据类型的切换,导致CASE
找到一个空指针而不是它的参数。(错误#57135,错误#11764313)PLUGIN_VAR_MEMALLOC
如果卸载插件,则不会释放 带有 wth 标志的字符串类型插件变量的线程局部变量 。(错误#56652,错误#11763882)当这四件事同时发生时,可能会发生死锁: 1) 一个旧的转储线程正在等待二进制日志增长。2)从旧转储线程复制的从服务器试图重新连接。在重新连接期间,新的转储线程试图杀死旧的转储线程。3) 一条
KILL
语句试图杀死旧的转储线程。4)INSERT
语句导致二进制日志轮换。(错误#56299,错误#11763573)myisampack
FULLTEXT
在压缩表时可能会创建损坏 (错误#53646,错误#11761180)SQL_BIG_RESULT
修饰符可以更改包含GROUP BY
子句的查询 的结果。(错误#53534,错误#11761078)ARCHIVE
带有NULL
列的表可能导致服务器崩溃或在并发负载下损坏。(错误#51252,错误#11758979)InnoDB
如果用户遵循消息中的建议,则在错误消息中使用不正确的标识符引用样式会导致错误。(缺陷 #49556,缺陷 #11757503)OPTIMIZE TABLE
如果启用,可能会损坏MyISAM
表 。myisam_use_mmap
(缺陷 #49030,缺陷 #11757032)对表的并发访问
ARCHIVE
可能会导致损坏。(错误#42784,错误#11751793)选择
GROUP_CONCAT()
函数结果的查询可能会返回不同的值,具体取决于是否ORDER BY
存在函数结果。(错误#41090,错误#11750518)链接问题阻止了
FEDERATED
存储引擎插件的加载。(缺陷 #40942,缺陷 #11750417)启用实现后,子查询可能会返回不正确的结果。(错误#40037、错误#11749901、错误#12705660、错误#12908058)
对于调试版本,可以为
ALTER
执行RENAME
操作的语句提出断言。HTON_FLUSH_AFTER_RENAME
这发生在暴露标志的存储引擎处理程序上 。(缺陷 #38028,缺陷 #11749050)操作所需空间的估计值
filesort
可能过高,导致初始化效率低下。(错误#37359,错误#11748783)ALTER TABLE
包含在语句中较早修改的列找不到现有列后添加新列的 操作ADD ... AFTER
。(缺陷 #34972,缺陷 #11748057)对于
FEDERATED
表,在某些插入操作期间丢失与远程表的连接可能会导致服务器崩溃。(漏洞 #34660,漏洞 #11747970)对于某些查询,
index_merge
访问方法甚至在比访问更昂贵的情况下也被使用ref
。(缺陷 #32254,缺陷 #11747423)函数的排序规则
SPACE()
由collation_connection
系统变量的解析时间值(而不是运行时值)决定,这可能会从准备好的语句、触发器和存储过程中产生意外结果。(缺陷 #23637,缺陷 #11746123)