有关升级、降级、平台支持等一般信息,请访问https://dev.10bet靠谱mysql.com/doc/relnotes/mysql/8.0/en/.
这是一个里程碑版本,使用风险自负。不支持里程碑版本之间(或者从里程碑版本到GA版本)的升级。重大的开发变更发生在里程碑版本中,您可能会遇到兼容性问题,例如除了通常的运行过程之外还需要注意的数据格式变更mysql_upgrade.例如,您可能会发现有必要使用, mysqldump升级前和升级后重新加载。(升级前备份是一种谨慎的预防措施。)
从MySQL 8.0.4开始,macOS 10.13是一个受支持的平台。
Linux:Linux平台上的二进制包现在是使用GCC 6构建的。优化级别由
o3
来- 02
.macOS;微软的Windows操作系统:要从源代码编译MySQL,可以使用
-DWITH_SSL =系统
CMake选项现在在Windows和macOS上工作。(Bug #26907731, Bug #87938)在GNU的平台上黄金使用了链接器,现在可以删除不使用的函数,减少二进制文件的大小。(Bug #26612067, Bug #87372)
# include
对源文件中的指令进行重写和重组以使其明确。(Bug #26597243, Bug #87358, Bug #26897738)的
构建
不再维护包含编译脚本的目录,并已从MySQL源树中删除。(Bug #26576219, Bug #87323)用于服务器版本的Boost库的最低版本现在是1.65.0。(Bug #26574924, Bug #87317)
MySQL现在可以在Unix和类Unix系统上链接到OpenSSL 1.1。(Bug #25094892, Bug #83814)
清理源代码库的工作已经完成,包括:删除不需要的CMake检查;从源文件中移除未使用的宏;重新组织头文件以减少依赖的数量并使它们更模块化,删除没有定义的函数声明,用行业标准库中的等效函数替换本地编写的函数。
的
validate_password
插件已经重新实现,以使用组件基础设施。安装和卸载validate_password
组件,使用以下语句:安装组件的文件:/ / component_validate_password;卸载组件“文件:/ / component_validate_password”;
安装插件
而且卸载插件
还在安装和卸载的工作validate_password
插件和之前一样,但会生成警告。的插件形式validate_password
已弃用,并将在未来的MySQL版本中删除。使用该插件的MySQL安装应该转换为组件。看到正在转换到密码验证组件.组件和插件实现之间的用法差异
validate_password
这是,而插件暴露的系统和状态变量的名称开始validate_password_
,组件使用惯例公开变量,其名称以组件名称和句点开头。例如,插件公开validate_password_policy
系统变量和validate_password_dictionary_file_words_count
状态变量,而组件公开的相应变量为validate_password.policy
而且validate_password.dictionary_file_words_count
.插件变量和插件本身一样,都是不推荐的,将在未来的MySQL版本中删除。
复制:在计算二进制日志过期时间时,为已弃用对象指定的任何值
expire_logs_days
系统变量现在被忽略binlog_expire_logs_seconds
的值,并且只有binlog_expire_logs_seconds
使用。以前,影响binlog_expire_logs_seconds
而且expire_logs_days
是累积的。如果在启动时为两个系统变量设置一个值,则会发出一条警告消息,说明的值
expire_logs_days
将被忽略。在设置另一个选项时,不能动态地设置或更改其中一个选项的值,在这种情况下会发出错误消息。如果两者都不存在,则默认的二进制日志过期时间为30天(在MySQL 8.0.2中更改)
binlog_expire_logs_seconds
也不expire_logs_days
在启动时设置了一个值。如果为任意一个值binlog_expire_logs_seconds
或expire_logs_days
在启动时设置,该值将覆盖默认的二进制日志过期时间。要禁用自动清除二进制日志,必须同时设置这两个选项binlog_expire_logs_seconds
而且expire_logs_days
在启动时显式地设置为0。(Bug #26274274, Bug #86698)对于RHEL、SLES和Fedora rpm,用于调试构建的默认插件目录已经更改为
/usr/lib64/mysql/plugin
来/usr/lib64/mysql/plugin/debug
.(Bug #27072155, Bug #88363)的
table_open_cache
系统变量默认变量从2000增加到4000。这将额外更改自动调整大小的默认值table_definition_cache
系统变量从1400到2000。的
optimizer_trace_max_mem_size
系统变量默认值从16KB更改为1MB,以减少优化器跟踪截断的可能性。的
log_error_verbosity
系统变量默认值从3(错误、警告和信息消息)更改为2(错误和警告消息)mysqld默认情况下,错误日志不那么详细。
InnoDB:的
innodb_undo_tablespaces
已弃用configuration选项,并将在未来的MySQL版本中删除。复制:的
group_replication_primary_member
status变量已被弃用,并将在未来的MySQL版本中删除。复制:的
group_replication_allow_local_disjoint_gtids_join
系统变量已被删除。当
libmysqld
嵌入式服务器库在MySQL 8.0.1删除,如下mysql_options ()选项仅用于libmysqld
没有删除。现在它们已经被移除。Mysql_opt_guess_connection mysql_opt_use_embedded_connection mysql_opt_use_remote_connection mysql_set_client_ip
(错误# 26712418)
生成的列不再允许在生成表达式中使用已弃用的函数,以避免在MySQL升级到已移除已弃用函数的版本时出现问题。(Bug #26279884, Bug #86712)
不兼容的更改:以前,MySQL使用Henry Spencer正则表达式库来支持正则表达式操作符(
正则表达式
,RLIKE
).正则表达式支持已经使用Unicode国际组件(International Components for Unicode, ICU)重新实现,它提供了完整的Unicode支持,并且是多字节安全的。的REGEXP_LIKE ()
函数执行正则表达式匹配正则表达式
而且RLIKE
操作符,它们现在是该函数的同义词。此外,REGEXP_INSTR ()
,REGEXP_REPLACE ()
,REGEXP_SUBSTR ()
函数可用于查找匹配位置并分别执行子字符串替换和提取。的regexp_stack_limit
而且regexp_time_limit
系统变量提供了对匹配引擎的资源消耗的控制。MySQL源码发行版捆绑了ICU库,而
WITH_ICU
CMake
选项控制是使用绑定的ICU库编译还是使用系统ICU库编译。的ICU_VERSION ()
函数返回ICU库版本。有关更多信息,请参见正则表达式.有关使用正则表达式的应用程序可能受实现更改影响的方式的信息,请参见正则表达式兼容性注意事项.
有两个新的SQL函数可以提供关于SQL语句的摘要信息。给定一个字符串形式的SQL语句,
STATEMENT_DIGEST ()
返回语句摘要哈希值,和STATEMENT_DIGEST_TEXT ()
返回规范化语句摘要。看到加密和压缩功能.
MySQL 8.0.3中禁止在父外键中重命名列的限制已经解除。(Bug #26659110, Bug #87490, Bug #25722221)
参考资料:请参见:Bug #26334071。
对于使用systemd的平台(参见使用systemd管理MySQL服务器),如果在服务器启动时为空,则初始化数据目录。如果数据目录是一个暂时消失的远程挂载,这可能会出现问题:挂载点看起来是一个空数据目录,然后将其初始化为一个新的数据目录。现在可以抑制这种自动初始化行为。中指定以下行
/etc/sysconfig/mysql
File(如果文件不存在,创建它):NO_INIT = true
(Bug #26595288, Bug #87287)
MySQL现在支持底层密匙环密匙库之间的密匙迁移,允许dba将MySQL安装从一个密匙环插件切换到另一个。看到在Keyring密钥库之间迁移密钥.
一个新的错误日志过滤器组件,
log_filter_dragnet
控件的值指定的用户定义规则,从而启用对写入错误日志的事件的控制dragnet.log_error_filter_rules
系统变量。这种新的过滤功能比使用内置的更灵活log_filter_internal
过滤器组件和log_error_verbosity
系统变量。有关更多信息,请参见错误日志过滤类型.写入错误日志的消息
log_sink_internal
日志接收组件现在包含一个错误id指示器。该ID的格式为[
.它跟在严重性指示器之后,在消息文本之前。有关更多信息,请参见错误日志输出格式.error_id
]当
log_error_verbosity
错误日志记录的系统变量被设置为过滤掉警告和信息消息,选择的关于非错误情况的重要消息现在作为系统消息打印到错误日志。这些消息在之前被处理并标记为错误,以便它们在发生时被记录log_error_verbosity = 1
是集。标记函数现在已经与这些消息的处理函数解耦,因此可以给消息一个适当的标签。系统消息现在有了标签”系统”MySQL错误日志。其他支持自定义标签的日志接收器也可能使用这个约定。对于不支持自定义标签的日志,在打印系统消息时,根据信息的严重程度使用相应的标签。但是,即使
log_error_verbosity
设置通常会排除此级别的消息。如果您的系统有额外的配置来丢弃标记为信息级别的消息,或将它们重定向到与标记为错误的消息不同的目的地,系统消息不会覆盖此行为。如果涉及的日志接收不使用”系统”标签,系统消息现在被丢弃或与其他标记为信息级别的消息一起重定向。
控件打印的消息”系统”支持的标签包括启动和关闭消息,以及一些重要的设置更改,如下:
现在所有MySQL二进制发行版都链接到OpenSSL,包括以前链接到yaSSL的社区发行版。另外,OpenSSL是动态链接的,而不是静态链接的,如果需要,可以替换SSL库与MySQL一起使用。对于某些平台,二进制发行版捆绑了OpenSSL库以确保库可用性:
Windows:分布包
libeay32.dll
而且ssleay32.dll
,它们安装在与MySQL二进制文件相同的目录下。其他库可以通过替换这些库文件来使用,或者使用Windows上支持的其他库选择方法来使用。(见https://msdn.microsoft.com/en-us/library/7d83bc18.aspx)。macOS:分布包
libssl.dylib
而且libcrypto.dylib
.MySQL二进制文件被链接到同一个目录中,并且那里的符号链接指向实际的库位置。Linux(用于通用压缩焦油仅限文件分发版):分发包
libssl.so
而且libcrypt.so
,安装在与libmysqlclient.so
客户端库。
(Bug #26272084, Bug #26134893, Bug #26927607, Bug #87996)
性能模式现在对语句摘要使用SHA-256哈希值,而不是MD5哈希值。为了适应SHA-256值所需增加的存储空间,
消化
性能模式表中的列从VARCHAR (32)
来VARCHAR (64)
.(错误# 26727443)性能模式
setup_timer
表已被删除蜱虫
行performance_timers
表格(错误# 18296337)
不兼容的更改:密码现在被限制为最大256个字符
caching_sha2_password
而且sha256_password
身份验证插件,以及密码()
函数的时候old_passwords = 2
.此外,密码散列的轮数是有上限的,以限制使用的CPU时间。(Bug #27099029, Bug #27194270)不兼容的更改:的
caching_sha2_password
而且sha256_password
身份验证插件提供的密码加密比mysql_native_password
插件,caching_sha2_password
提供比sha256_password
.由于这些优越的安全性和性能特点caching_sha2_password
,它现在是首选的身份验证插件,也是默认的身份验证插件,而不是mysql_native_password
.此更改同时影响服务器和libmysqlclient
客户端库:对于服务器,默认值为
default_authentication_plugin
系统变量从mysql_native_password
来caching_sha2_password
.的
libmysqlclient
图书馆对待caching_sha2_password
作为默认的身份验证插件而不是mysql_native_password
.
这一变化具有以下含义:
修改只影响创建新MySQL帐户时使用的认证插件。对于升级后的安装中已经存在的帐户,其认证插件保持不变。
使用的身份验证帐户的客户端
caching_sha2_password
必须使用安全连接(使用TLS/SSL凭据的TCP连接、Unix套接字文件或共享内存),或支持使用RSA密钥对交换密码的未加密连接。此安全性要求不适用于mysql_native_passsword
,于是切换到caching_sha2_password
可能需要额外的配置(参见缓存SHA-2可插拔认证).然而,MySQL 8.0中的客户端默认使用TLS/SSL,所以已经符合该优先级的客户端可能不需要额外的配置。因为
caching_sha2_password
现在也是默认的身份验证插件在libmysqlclient
在客户端/服务器协议中,对于从MySQL 8.0客户端到使用MySQL的帐户的连接,身份验证需要一个额外的往返mysql_native_password
(之前的默认身份验证插件),除非客户端程序使用——default-auth = mysql_native_password
选择。不兼容性:尚未更新的客户端和连接器
caching_sha2_password
不能连接到使用进行身份验证的帐户caching_sha2_password
因为他们不承认这个插件是有效的。要解决这个问题,请将客户端与libmysqlclient
从MySQL 8.0.4或更高版本,或获取更新的连接器,以识别caching_sha2_password
.不兼容性:尚未更新的客户端和连接器
caching_sha2_password
可能有问题连接到MySQL 8.0服务器配置caching_sha2_password
作为默认的身份验证插件,甚至使用没有身份验证的帐户caching_sha2_password
.出现这个问题是因为服务器向客户端指定了默认的身份验证插件的名称。如果客户端或连接器基于客户端/服务器协议实现,而该实现不能正常处理未识别的默认身份验证插件,那么它可能会失败并报错。
欲了解更多信息,更突出的作用
caching_sha2_password
,包括潜在兼容性问题和解决方案的讨论,请参见caching_sha2_password作为首选认证插件.此外,复制从机现在能够使用基于RSA密钥对的密码交换连接到主机。此RSA功能适用于使用
caching_sha2_password
或sha256_password
身份验证插件。(以前,奴隶可以通过这些插件进行身份验证,但需要一个安全连接,不能使用RSA密码交换。)下面的更改启用了这个新的从属RSA功能:的
改变主
语句具有指定RSA公钥信息的子句。对于组复制
group_replication_recovery_public_key_path
而且group_replication_recovery_get_public_key
系统变量也有同样的作用。的
显示奴隶状态
语句和性能架构replication_connection_configuration
表显示复制从RSA公钥信息。
现在更多的项目支持
——server-public-key-path
选项指定用于基于RSA密钥对的密码交换的公钥的客户端文件caching_sha2_password
或sha256_password
身份验证插件:mysqladmin,mysqlbinlog,mysqlcheck,, mysqldump,mysqlimport,mysqlpump,mysqlshow,mysqlslap,mysql_upgrade.以前,只有mysql而且mysqltest支持——server-public-key-path
.的——server-public-key-path
Option是另一种选择——get-server-public-key
,当客户端文件包含服务器所需的RSA公钥副本时,可以使用该文件,而不是向服务器发送公钥请求。新
mysql_reset_server_public_key ()
C API函数从客户端库中清除服务器RSA公钥的任何缓存副本。看到mysql_reset_server_public_key ().新
caching_sha2_password_auto_generate_rsa_keys
系统变量使能自动生成RSA私钥/公钥文件,类似于sha256_password_auto_generate_rsa_keys
系统变量。看到自动SSL和RSA文件生成.新
Caching_sha2_password_rsa_public_key
属性使用的公钥caching_sha2_password
RSA密钥对密码交换认证插件。(错误# 26751594)MySQL Server的链接OpenSSL库已经更新到1.0.2n版本。在新的OpenSSL版本中修复的问题见http://www.openssl.org/news/vulnerabilities.html.(Bug #27212666, Bug #27236394)
自动生成的证书mysqld而且mysql_ssl_rsa_setup现在使用X509 v3而不是v1。(错误# 26521654)
不兼容的更改:这些空间导入函数现在返回坐标超出合法值范围的地理空间参考系统中的数据错误:
ST_GeomCollFromText ()
,ST_GeomCollFromTxt ()
,ST_GeomCollFromWKB ()
,ST_GeometryCollectionFromText ()
,ST_GeometryCollectionFromWKB ()
,ST_GeometryFromText ()
,ST_GeometryFromWKB ()
,ST_GeomFromGeoJSON ()
,ST_GeomFromText ()
,ST_GeomFromWKB ()
,ST_LineFromText ()
,ST_LineFromWKB ()
,ST_LineStringFromText ()
,ST_LineStringFromWKB ()
,ST_MLineFromText ()
,ST_MLineFromWKB ()
,ST_MPointFromText ()
,ST_MPointFromWKB ()
,ST_MPolyFromText ()
,ST_MPolyFromWKB ()
,ST_MultiLineStringFromText ()
,ST_MultiLineStringFromWKB ()
,ST_MultiPointFromText ()
,ST_MultiPointFromWKB ()
,ST_MultiPolygonFromText ()
,ST_MultiPolygonFromWKB ()
,ST_PointFromText ()
,ST_PointFromWKB ()
,ST_PolyFromText ()
,ST_PolyFromWKB ()
,ST_PolygonFromText ()
,ST_PolygonFromWKB ()
.(ST_LatFromGeoHash ()
,ST_LongFromGeoHash ()
,ST_PointFromGeoHash ()
不要有此行为,因为它们不能表示超出范围的值。)ST_GeomFromGeoJSON ()
现在还返回一个错误,如果crs
在GeoJSON文档的较低级别可以找到指定不同于顶级对象SRID的SRID成员。请注意如果空间数据包含指向地理空间引用系统的SRID值,并且数据坐标超出了范围,那么使用这些函数的现有查询将返回不同的结果,与以前的MySQL版本相比。
(Bug #26941370, Bug #88031)
不兼容的更改:以前,这些空间函数忽略了空间参考系统(SRS)的几何参数,并在笛卡尔平面上计算结果。它们现在支持指定地理SRS的几何参数计算:
ST_Distance_Sphere ()
,ST_IsSimple ()
,ST_IsValid ()
,ST_Length ()
.以前,这些空间函数忽略了任何几何参数的SRS,而是在笛卡尔平面上计算结果。现在,当使用指定地理SRS的几何参数调用它们时会产生错误:
ST_Area ()
,ST_Buffer ()
,ST_Centroid ()
,ST_ConvexHull ()
,ST_Difference ()
,ST_Envelope ()
,ST_Intersection ()
,ST_IsClosed ()
,ST_MakeEnvelope ()
,ST_Simplify ()
,ST_SymDifference ()
,ST_Union ()
,ST_Validate ()
.以前,这些空间函数允许具有未定义SRS的几何参数。它们现在会在使用SRS未定义的几何参数调用时产生错误:
ST_Dimension ()
,ST_Distance_Sphere ()
,ST_EndPoint ()
,ST_ExteriorRing ()
,ST_GeometryN ()
,ST_GeometryType ()
,ST_InteriorRingN ()
,ST_IsEmpty ()
,ST_IsSimple ()
,ST_IsValid ()
,ST_Length ()
,ST_NumGeometries ()
,ST_NumInteriorRing ()
,ST_NumInteriorRings ()
,ST_NumPoints ()
,ST_PointN ()
,ST_StartPoint ()
,ST_SwapXY ()
,ST_X ()
,ST_Y ()
.在此之前,
ST_GeoHash ()
空间函数接受任意SRID点。ST_GeoHash ()
现在只接受SRID 0或4326的点。请注意如果空间数据包含的几何值被刚才列出的函数解释为不同的值,那么使用这些函数的现有查询将返回不同的结果,与以前的MySQL版本相比。
不兼容的更改:对于以下接受SRID参数的空间函数,如果SRID不存在,它们现在返回一个错误:
ST_GeomCollFromText ()
,ST_GeomCollFromTxt ()
,ST_GeomCollFromWKB ()
,ST_GeometryCollectionFromText ()
,ST_GeometryCollectionFromWKB ()
,ST_GeometryFromText ()
,ST_GeometryFromWKB ()
,ST_GeomFromGeoJSON ()
,ST_GeomFromText ()
,ST_GeomFromWKB ()
,ST_LineFromText ()
,ST_LineFromWKB ()
,ST_LineStringFromText ()
,ST_LineStringFromWKB ()
,ST_MLineFromText ()
,ST_MLineFromWKB ()
,ST_MPointFromText ()
,ST_MPointFromWKB ()
,ST_MPolyFromText ()
,ST_MPolyFromWKB ()
,ST_MultiLineStringFromText ()
,ST_MultiLineStringFromWKB ()
,ST_MultiPointFromText ()
,ST_MultiPointFromWKB ()
,ST_MultiPolygonFromText ()
,ST_MultiPolygonFromWKB ()
,ST_PointFromGeoHash ()
,ST_PointFromText ()
,ST_PointFromWKB ()
,ST_PolyFromText ()
,ST_PolyFromWKB ()
,ST_PolygonFromText ()
,ST_PolygonFromWKB ()
.(ST_SRID ()
已经有这种行为了。)请注意如果空间数据包含指向不存在的空间引用系统的SRID值,使用这些函数的现有查询将返回不同的结果,与以前的MySQL版本相比。
服务器现在打印一个警告,如果
空间
创建优化器永远不会使用的索引。(错误# 27015964)包含空间计算空间参考系统数据的EPSG数据集已经从9.0版本升级到9.2版本。(Bug #26711258, Bug #87564, Bug #26990896)
MySQL现在支持
创建空间参考系统
而且落点空间参考系统
用于在数据字典中创建和删除空间参考系统(SRS)定义的语句。看到创建空间引用系统语句,删除空间引用系统语句.通过实现这些语句,可以直接访问mysql.st_spatial_reference_systems
数据字典表使用语句,例如选择
,插入
,更新
不再需要,也不再被允许。对SRS定义的读访问仍然通过INFORMATION_SCHEMA
ST_SPATIAL_REFERENCE_SYSTEMS
表,像以前一样。
10bet官方网站MySQL测试套件的文档现在使用Doxygen在MySQL源树中维护(请参阅MySQL服务器Doxygen文档,可在https://dev.10bet靠谱mysql.com/doc/index-other.html)。以前由旧的测试套件手册生成的相关Unix手册页不再更新,并且已经过时。因此,它们不再包含在MySQL发行版中。(错误# 27021754)
MySQL测试套件现在包括
CRC32 ()
测试。谢谢丹尼尔·布莱克的补丁。(Bug #26495791, Bug #87136)mysqltest现在接受一个可选的
重试
这些命令的参数:copy_file
copy_files_wildcard
,file_exists
,move_file
,remove_file
,remove_files_wildcard
.用法如下:--file_operationfile_name...[重试]
当
重试
参数时,命令将以一秒的间隔重试失败操作的给定次数。(错误# 24671890)
X Plugin可能错误地从传递给JSON字符串的函数的参数中删除引号,导致错误。(错误# 26906519)
在一个集合上创建索引之后,X Plugin会将该集合作为关系表列出,而不再将其作为一个集合列出。(错误# 26906487)
mysqlxtest没有显示小数秒
DATETIME
正确的价值观。(错误# 26638422)X Plugin返回一个列元数据字段,显示一个JSON列的小数,该信息与此无关。该字段不再返回。(错误# 26258481)
X插件处理用户帐户查找错误,如果IP地址解析为空的主机名。(错误# 26042786)
X Plugin现在可以配置为中止任何被认为空闲的经过身份验证的连接。增加了以下系统变量:
X插件现在支持缓存SHA-2可插拔认证.要启用支持,发出以下命令:
安装插件mysqlx_cache_cleaner
这个插件维护缓存并删除所有被修改帐户的条目。
参考资料:请参见:Bug #27213213, Bug #27042109。
InnoDB:弃用
InnoDB
升级到MySQL 8.0.3或更高版本后不再需要的系统表在成功升级后会被删除。(错误# 26757171)InnoDB:支持在MySQL二进制文件升级到新版本后启动MySQL服务器时自动升级数据字典表定义。在启动时,将服务器的数据字典版本与数据字典中存储的版本信息进行比较,以确定是否需要升级数据字典表。如果需要并支持升级,服务器会创建具有更新定义的数据字典表,将持久化的元数据复制到新表中,用新表自动替换旧表,并重新初始化数据字典。如果不需要升级,则启动时不更新数据字典表。
的mysqld
——no-dd-upgrade
选项可用于防止启动时自动升级数据字典表。InnoDB:新方法支持在服务器脱机时将表空间文件移动或恢复到新位置
——innodb-directories
选项,该选项定义在启动时扫描表空间文件的目录。有关更多信息,请参见在服务器离线时移动表空间文件.随着介绍
——innodb-directories
特性中,使用绝对路径创建的每个表文件和一般表空间文件的位置或在数据目录外部的位置应该添加到innodb_directories
参数值。否则,InnoDB
在恢复期间无法定位这些文件。要查看表空间文件位置,请查询INFORMATION_SCHEMA。文件
表:从INFORMATION_SCHEMA中选择表空间名称和文件名称。文件\ G
的
创建表空间……添加数据文件
语句现在要求指定的目录是已知的InnoDB
.对象隐式和显式定义的已知目录innodb_directories
选择。innodb_directories
替换innodb_scan_directories
,它已被移除。InnoDB:
InnoDB
现在支持对存储在聚集索引页外部字段中的大对象(LOB)数据进行部分更新,包括JSON
文档更新使用JSON_SET ()
而且JSON_REPLACE ()
.以前,LOB值只能全部读取或修改,并且只能更新JSON
列值是通过完全删除前一个文档并在其位置写入新文档来实现的。部分更新使用内部LOB索引(在压缩LOB数据的情况下是ZLOB索引),当插入或更新包含LOB数据的行时,创建并存储在一个或多个LOB页面中。因此,对于新插入的行,支持LOB数据的部分获取和更新,但是必须更新包含LOB数据的现有行,以添加部分获取和更新支持。添加LOB索引数据会以很小的百分比增加LOB值所需的存储空间。
该特性增加了以下功能
InnoDB
用于存储未压缩和压缩的LOB数据的页类型:FIL_PAGE_TYPE_LOB_INDEX
FIL_PAGE_TYPE_LOB_DATA
FIL_PAGE_TYPE_LOB_FIRST
FIL_PAGE_TYPE_ZLOB_FIRST
FIL_PAGE_TYPE_ZLOB_DATA
FIL_PAGE_TYPE_ZLOB_INDEX
FIL_PAGE_TYPE_ZLOB_FRAG
FIL_PAGE_TYPE_ZLOB_FRAG_ENTRY
InnoDB:的存储引擎私有字段
mysql.tablespaces
的数据字典表和第0页InnoDB
表空间文件现在存储MySQL服务器版本和表空间版本信息。MySQL服务器版本是创建表空间的版本、导入表空间的版本或上一次MySQL大升级的版本。表空间版本跟踪表空间格式的变化。SERVER_VERSION
而且SPACE_VERSION
字段添加到INFORMATION_SCHEMA。INNODB_TABLESPACES
表,以提供对该数据的访问。复制:现在可以将主机名指定为组复制连接的白名单的一部分,使用
group_replication_ip_whitelist
系统变量。主机名支持CIDR符号。不支持解析到IPv6地址的主机名。对于主机名,只有当连接请求由另一个服务器发出时才进行名称解析。无法解析的主机名不会被考虑用于白名单验证,并将一条警告消息写入错误日志。对解析后的主机名进行FCrDNS (Forward-confirmed reverse DNS)验证。
警告与白名单中的IP地址相比,主机名本身就不那么安全。FCrDNS验证提供了很好的保护级别,但可能会被某些类型的攻击破坏。仅在严格需要时才在白名单中指定主机名,并确保用于名称解析的所有组件(如DNS服务器)都在您的控制下维护。您也可以使用hosts文件在本地实现名称解析,以避免使用外部组件。
JSON:添加了
JSON_TABLE ()
函数,它接受JSON
数据,并将其作为一个关系表返回,该关系表的列是指定的。可以使用标准SQL机制访问这个虚拟表这个函数有这样的语法
JSON_TABLE (
,在那里expr
,路径
列column_list
) ()别名
)expr
是返回JSON数据的表达式路径
JSON路径应用于源,并且column_list
列定义的列表。列可以是以下类型为顺序
,路径
,存在路径
,嵌套的路径
或嵌套的
,如下表所述:为顺序
:列是一个计数器,类似于AUTO_INCREMENT
列。路径
:该列保存使用指定JSON路径的标量值。在错误
而且在空
支持分别处理非法值(如非标量)和空值的选项。存在路径
:如果指定的JSON路径有匹配项,列值为1,否则为0。嵌套的路径
:在给定的JSON路径中找到的JSON数据中的嵌套对象或数组将与来自父对象或数组的JSON值一起扁平成一行。的路径
关键字是可选的。
这里展示了两个简单的例子:
mysql> SELECT * -> FROM -> JSON_TABLE(-> '[1,3,5,7,9]', -> "$[*]" COLUMNS(rowiforordinality, col VARCHAR(50) PATH "$") ->) AS t1;+-------+------+ | rowid |坳 | +-------+------+ | 1 | 1 | | 2 | 3 | | 3 | 5 | | 4 | 7 | | 5 | 9 | +-------+------+ mysql >设置@j = '[{“a”:[{“x”:“3”},{“y”:“2 "}]}, '> {" b: [{" x ": " 1 "}, {" y ":“1 "}]}, '> {" ”:[{“x”:“2”},{“y”:“3”}]}]”;mysql> SELECT * -> FROM JSON_TABLE(-> @j, -> "$[*]" COLUMNS(-> rowid FOR ORDINALITY, -> -> xa INT EXISTS PATH "$。a", -> xb INT EXISTS PATH "$。b", -> -> ja JSON PATH "$。a", -> jb JSON PATH "$。b" ->) ->) AS jts;+-------+------+------+--------------------------+--------------------------+ | rowid | xa | xb |是|简森-巴顿 | +-------+------+------+--------------------------+--------------------------+ | 1 | 1 | 0 |[{“x”:“3”},{“y”:“2”}]零| | | 2 | 0 | 1 |零| [{" x ": " 1 "}, {" y ": " 1 "}) | | 3 | 1 | 0 |[{“x”:“2”},{“y”:“3”}]| NULL | +-------+------+------+--------------------------+--------------------------+
JSON源表达式可以是产生有效JSON文档的任何表达式,包括JSON文字、表列或返回JSON的函数调用,例如
JSON_EXTRACT (t1、数据“.post.comments美元”)
.有关此函数的完整语法和其他信息,请参见JSON表函数.的
-DWITH_ASAN_SCOPE
CMake选项启用地址杀毒器-fsanitize-address-use-after-scope
使用Clang标志-瞄准镜后检测。默认为关闭。要使用这个选项,-DWITH_ASAN
也必须启用。(错误# 27095089)处理空
JSON
文件已经变得更加有力。(Bug #26787468, Bug #87734)MySQL 8.0.3对
ALTER TABLE重命名
在外键关系中的表上,如果锁表
是活跃的。这一限制已被取消。(Bug #26647340, Bug #87467)如果将服务器PID文件配置为在全局可写的位置创建,服务器现在会发出警告,建议使用更安全的位置。(错误# 26585560)
结构使用
_
字符集引入器(例如,字符集
_utf8mb4 ' abc '
),通过将导入器映射到正确的字符集,查找性能得到了改进。(Bug #25680866, Bug #85331)
重要的变化:对。进行了以下更改
PERIOD_ADD ()
而且PERIOD_DIFF ()
功能:与这些函数之一一起使用的周期值不能为负数。
周期值的月部分可能不等于0。
如果这些函数中至少有一个条件为真,则使用的句点值将导致函数失败并产生错误。(Bug #27004699, Bug #27004729)
重要的变化:的
至少()
而且最大的()
函数不再试图从使用它们的表达式中推断参数的上下文。例如,(“11”,“45”,“2”)
返回“11”
,但Least ('11', '45', '2') + 0
将函数参数作为整数而不是字符串处理,并返回2
.现在,这些函数总是严格地根据类型来计算它们的参数,并且由于包含在表达式中的数据类型强制只对函数返回的结果执行。这意味着这个表达Least ('11', '45', '2') + 0
现在评估“11”+ 0
,从而变为整数值11
.作出这一改变是出于下列考虑:
推导上下文的规则并不总是清晰或一致的。
在表达式中使用这些函数的结果与的结果不一致
合并()
,或属于联盟
查询
应该检查在表达式中使用这些函数的应用程序,以确保它们不依赖于之前的行为,并在它们依赖于之前的行为时进行更新。(Bug #83895, Bug #25123839)
InnoDB:在主服务器上成功运行到XA准备阶段的并发XA事务在从服务器上重放时发生冲突,导致应用程序线程中的锁等待超时。冲突是由于GAP锁的范围不同,当事务在slave上连续重放时。为了防止这种类型的冲突,XA事务使用GAP锁
读过承诺
当XA事务到达准备阶段时,将释放(不再继承)隔离级别。(Bug #27189701, Bug #25866046)InnoDB:一个
ALTER TABLE
添加引用具有生成的虚拟列的表的外键约束的操作将引发断言。(错误# 27189701)InnoDB:一个
删除数据库
操作由于缺少通用表空间数据文件而引发断言。(错误# 27151163)InnoDB:在Windows上,更改表分区的操作会引发断言。表名解析不正确。(错误# 27075816)
InnoDB:一个
截断表
对临时表的操作引发断言。(错误# 27073280)InnoDB:在DDL操作的DDL后阶段对恢复相关函数的调用会引发断言。(Bug #27041487, Bug #88263)
InnoDB:添加引用带有SRID属性的列的空间索引将返回一个错误。(错误# 27021029)
InnoDB:外键名称为64个字符的表导致升级失败。应该允许长度不超过64个字符的外键名。(Bug #27014308, Bug #88196)
InnoDB:的
InnoDB
MySQL 5.7升级到8.0的压缩表恢复失败,表空间大小错误。压缩表的表空间文件现在使用物理页大小创建,而不是使用
InnoDB
page size,这使得空的压缩表的表空间文件的初始大小小于以前的MySQL版本。(Bug #27014083, Bug #88195)InnoDB:不必要的表空间获取和缓存更新操作导致服务器启动延迟。(错误# 26995951)
参考资料:此问题是:Bug #26832347的回归。
InnoDB:一个孤儿
.frm
文件导致升级失败,并且由于在第一次升级尝试期间重命名了全文搜索辅助表,后续的升级尝试都不成功。(错误# 26995951)InnoDB:为解决并发期间相互冲突的串行字典信息(SDI)插入问题而引入的变通方法
创建表
操作被移除。(错误# 26995534)参考资料:请参见:Bug #26539665。
InnoDB:一个”设备上没有剩余空间”错误报告无效的错误消息。(错误# 26960345)
InnoDB:在快速关闭期间,
InnoDB
关闭文件后,试图将动态元数据写入数据字典,由于数据字典表空间的I/O挂起,导致初始化失败。(错误# 26950659)InnoDB:升级到MySQL 8.0.4后启动时遇到堆栈溢出错误,原因是反复尝试加载一个被驱逐的
InnoDB
系统表。(Bug #26945437, Bug #88042)InnoDB:导入压缩表会引发断言。该操作使用表的聚集索引而不是序列化字典信息(SDI)索引来转换SDI页面。(错误# 26938297)
InnoDB:在调试构建过程中,临时表创建失败
取代
操作引发无效断言。(Bug #26919378, Bug #26958868)InnoDB:
删除数据库
如果数据库表是在普通表空间中创建的,则失败。通用表空间标志注册错误,导致串行字典信息(SDI)操作失败。(错误# 26834496)InnoDB:启用二进制日志记录后
改变表空间……重命名
操作失败,具有”无法找到空间”错误。(错误# 26832347)InnoDB:未能添加索引的操作将引发无效的自适应哈希索引断言。(错误# 26788968)
InnoDB:从数据字典读取的有效表行类型值将引发无效断言。(错误# 26773152)
InnoDB:开始升级
innodb_force_recovery = 5
初始化InnoDB
后台线程,但遇到错误时没有优雅地退出线程。使用非零进行升级innodb_force_recovery
不再允许设置。(错误# 26766632)InnoDB:一个失败的
创建临时表
语句中留下了一个条目INFORMATION_SCHEMA。在NODB_TEMP_TABLE_INFO
.没有释放内存中的表对象。(错误# 26765438)InnoDB:
InnoDB
查错了一个虚拟列的名称dict_table_t
在试图定位外键的限定索引时使用。(错误# 26764604)InnoDB:控件的可附加读写事务
table_stats
而且index_stats
数据字典表试图更新同一行,导致死锁。(错误# 26762517)InnoDB:在恢复期间,内存中表空间对象中的表空间名称是使用文件名字符集而不是表名字符集定义的,导致”丢失的表空间”错误。(错误# 26761960)
InnoDB:引导代码没有为数据字典表保留前1024个表id。(错误# 26757227)
InnoDB:由于锁类型设置不正确,来自分区表上不同客户端的多次更新会导致意外的锁等待超时。(Bug #26731025, Bug #87619)
InnoDB:一个试图获取元数据锁的异步回滚线程被中断,但是产生的错误没有返回给服务器。这个问题可以通过删除元数据锁获取来解决,异步回滚不需要元数据锁获取。
当打开表进行撤消处理时,只检查内存中的表。现在还会检查数据字典,以防表不在内存中。(错误# 26678883)
InnoDB:当试图打开名称超过预期的全文辅助表时,会引发断言。(错误# 26649020)
InnoDB:数据字典表打开函数没有正确处理表和模式名称字符集转换,导致恢复过程中出现错误。(错误# 26640776)
InnoDB:一个事务
end_stmt ()
函数没有被调用ALTER TABLE……分区
场景,导致超时。(Bug #26629790, Bug #25886814)InnoDB:在DDL操作的提交阶段获取串行用词信息(SDI)表上的元数据锁将会由于锁等待超时或查询暂停而失败。(错误# 26628126)
InnoDB:在检查重做日志边界时,不会考虑动态元数据更新的重做日志。而且,在只读模式下,
innodb_dynamic_metadata
从重做日志写入元数据时打开了不必要的数据字典表。(错误# 26589535)InnoDB:在安装的尝试失败后,发生了意外错误
memcached
插件。(错误# 26588738)InnoDB:缓冲池页的状态在进行缓冲池大小调整操作时被另一个线程更改。(错误# 26588537)
InnoDB:断言冲突锁的调试函数没有考虑要提交或回滚的事务锁。(错误# 26562371)
InnoDB:更新等待记录锁年龄的VATS (Variance-Aware Transaction Scheduling)功能未能忽略表锁,导致断言失败。(错误# 26538702)
InnoDB:创建或修改表分区的DDL操作无意中改变了其他分区的行格式,从而导致行格式不匹配。(错误# 26535746)
InnoDB:一个
ALTER TABLE
操作导致服务器停止。(错误# 26492721)InnoDB:的
innodb_table_stats
重命名分区表时,没有使用新的分区名称更新数据字典表。(Bug #26390658, Bug #86927)InnoDB:由于在MySQL 8.0.0中引入了回归,所以
innodb_change_buffering
无法动态设置配置选项。(错误# 26389442)InnoDB:在回滚并发索引时访问了已释放索引的联机日志
更新
语句。(错误# 26334475)InnoDB:一个
取代
在虚拟列前缀上具有辅助索引的表上的操作将引发断言。(错误# 26330279)InnoDB:设置
tmpdir
驱动器的根本原因”无效的(旧的?)表或数据库名称”打印到错误日志中的错误消息。(Bug #26299984, Bug #86737)InnoDB:竞态条件发生在
INFORMATION_SCHEMA
当试图检查事务状态而不获取事务互斥时查询。(错误# 26299705)InnoDB:一个
刷新表
删除中止索引的操作失败。在从缓存中删除表时,在检查中止索引之前会删除聚集索引。(Bug #26256456, Bug #86607)InnoDB:为
InnoDB
表,创建表……就像
不尊重innodb_file_per_table
系统变量设置和显示创建表
显示一个表空间
子句,即使用户在创建表时没有指定显式的表空间。(Bug #26199233, Bug #86589)InnoDB:处理外部级联操作的迭代方法导致过多的内存使用。(Bug #26191879, Bug #86573)
这个问题是:Bug #16244691的回归。
InnoDB:清除压缩页的缓冲池清除操作的锁获取顺序不正确。(错误# 25972975)
InnoDB:当数据字典对象仍在使用时,元数据锁被释放。(错误# 25928984)
InnoDB:innochecksum运行时返回Valgrind错误
InnoDB
文件的压缩页面大小为1K。(Bug #25922124, Bug #85993)InnoDB:终止线程未能关闭正在执行的另一个线程的套接字
截断表
操作,导致断言。(Bug #25887335, Bug #85925)InnoDB:一个
插入
由于锁冲突检查期间发生失败,对具有空间索引的表的操作将引发断言。(错误# 25729649)InnoDB:为数据字典表激活了一个用于用户表的调试同步点。(错误# 25508568)
InnoDB:添加了一个服务器端检查,以防止在生成的存储列的基本列上放置外键约束。(错误# 25339192)
InnoDB:当历史列表的长度超过2000000时,应该只出现在MySQL调试版本中的警告会打印到错误日志中。(Bug #24296076, Bug #82213)
InnoDB:试图将缓冲池大小减少到小于缓冲池块大小时没有报告警告。(错误# 23590280)
InnoDB:一个”错误的键列”为解决不支持的索引创建场景而添加的错误。(错误# 22486025)
InnoDB:对使用二进制排序规则的索引列进行全文搜索不会返回区分大小写的匹配项。(Bug #21625016, Bug #78048)
包装:当试图在Fedora 27上使用MySQL Yum存储库安装MySQL服务器时,由于与本机冲突,安装失败
mariadb-connector-c-devel
包中。通过这个修复,适当”废止”已为该程序包和其他本机程序包添加。(错误# 26963839)分区:当使用隐式表空间创建分区表时,结果是将每个分区放在自己的表空间中,而不为整个表指定表空间。由于序列化字典信息(SDI)存储在给定表使用的所有表空间中,因此将其存储在具有许多表空间的表中的成本变得非常高。解决这个问题的方法是在用于存储SDI的表空间集中只包含第一个分区的表空间。(错误# 26762973)
参考资料:请参见:Bug #26765252。
分区:可以提出一个主张
创建视图
在分区表上,当服务器试图删除基础表的分区时。(错误# 26659699)分区:当重命名一个分区表时,表统计信息不会用新的分区名称更新。(Bug #86074, Bug #25953183)
复制;JSON:对于基于行的复制,如果服务器变量存在,则不应用对JSON文档的部分更新
binlog_row_value_options = PARTIAL_JSON
(在MySQL 8.0.3中引入)没有在复制从机上指定,也没有在主机上指定。现在,无论从主机是否接收到JSON文档,复制从机都会对其进行部分更新binlog_row_value_options = PARTIAL_JSON
在它自己的环境中。(错误# 26762675)复制:这个函数
set_unknow_error ()
在Binlog_sender
类被重命名为set_unknown_error ()
.感谢Simon Mudd的修复(也为错误88149中的拼写错误修复)。(Bug #27149075, Bug #88559)参考资料:请参见:Bug #26996065, Bug #88149。
复制:当您调用mysqld与
——初始化
或——initialize-insecure
选项初始化数据目录时,将不再发出有关的可用性的警告消息mysql.gtid_executed
表,该表在该阶段不应提供。另外,以前作为关于生成新UUID的警告发出的消息现在作为说明发出,因为在那种情况下,生成新UUID是正常的。(错误# 27115183)复制:在MySQL 8.0.3中,二进制日志文件和索引文件的默认基本名称是
,使用主机机器的名称。时使用此默认名称host_name
本——log-bin
选项,并且如果——log-bin
选项没有提供字符串或提供空字符串。从MySQL 8.0.4,如果您不提供——log-bin
选项,MySQL现在使用binlog
作为二进制日志文件和索引文件的默认基本名称。在MySQL 8.0.3之前的版本中,该配置没有二进制日志,所以在升级时不会与现有的二进制日志不兼容。但是,为了兼容MySQL 8.0.3之前版本的现有二进制日志,如果您提供——log-bin
选项不带字符串或带空字符串时,基本名称默认为
,使用主机机器的名称。host_name
本如果没有使用。指定二进制日志文件名,则在启动时发出的警告消息
——log-bin
选项(ER_LOG_BIN_BETTER_WITH_NAME),如果没有通过设置指定服务器IDserver_id
系统变量(ER_WARN_NO_SERVERID_SPECIFIED)现在作为信息消息发出。如果试图使用非唯一的服务器ID进行复制,则仍然会发出警告消息。(错误# 27082922)复制:在
Gtid_log_event
在二进制日志文件中的每个GTID事务之前transaction_length
字段为16777216或更多字节的事务使用了8个字节,而它应该使用允许的最大9个字节。(错误# 26993433)复制:MySQL 8.0.3版本中缺失了Bug #22671846的修复。(错误# 26985976)
复制:Bug #26117735 (MySQL Bug #86288)的修复可能会在运行时导致调试断言mysqlbinlog与
——read-from-remote-server
选择和——rewrite-db
选项,具体取决于重写规则中指定的数据库名称。现在这个问题已经得到了纠正。(错误# 26878022)复制:使用yaSSL编译的MySQL,在使用半异步复制的情况下,确认包的错误处理可能会导致死锁。多个确认包可以被yaSSL一起读取,但是半异步复制的接收线程只处理轮询后看到的第一个确认包。现在,接收线程处理缓冲区中出现的所有确认包。(错误# 26865538)
复制:在使用半异步复制时,if
重置的主人
当一个活动事务正在等待从服务器的确认时发出,等待会话的数量Rpl_semi_sync_master_wait_sessions
等待完成后,服务器状态变量不正确。(错误# 26748533)复制:的
——log-slave-updates
而且——slave-preserve-commit-order
选项需要二进制日志记录。指定这些选项并禁用二进制日志记录——skip-log-bin
或——disable-log-bin
选项,则发出警告或错误消息。的——skip-log-bin
而且——disable-log-bin
选项现在禁用——log-slave-updates
而且——slave-preserve-commit-order
选项,因此当未指定这些选项时,不会发出警告或错误消息。(错误# 26666259)复制:
XA回滚
由于给出了错误的事务ID而失败的语句,可以用正确的事务ID记录在二进制日志中,因此可以由复制从机进行操作。现在在进行二进制日志记录之前检查错误情况,但是失败了XA回滚
语句不会被记录。(Bug #26618925, Bug #87393)复制:启动组复制插件的线程没有被正确地终止。这使得在杀死启动Group Replication的线程后无法停止或启动插件。(错误# 26435775)
复制:对于NDB存储引擎,当从属服务器使用散列搜索行(默认包含在
slave_rows_search_algorithms
系统变量MySQL 8.0.2),用于存储行散列的表在从机上删除记录后没有被正确清理。这个问题是由NDB存储引擎返回的一个变体错误值引起的,现在已经修正为预期的值。(错误# 26434966)复制:更新特定于复制的存储库表的MySQL内部管理命令,例如在使用mysqlrplsync实用程序,现在可以绕过读锁。的设置使此类命令能够执行
read_only
而且super_read_only
系统变量和自动提交
模式。(Bug #26414532, Bug #86224)复制:二进制对数函数
MYSQL_BIN_LOG: new_file_impl
返回错误”不能打开文件”(ER_CANT_OPEN_FILE
在它应该回来的时候”错误写文件”(ER_ERROR_ON_WRITE
).(Bug #26370868, Bug #86870)复制:当由复制从机(由
binlog_transaction_dependency_tracking
系统变量),现在在生成写集信息时将考虑数据库的大小写和重音敏感性。写设置信息生成时transaction_write_set_extraction
启用系统变量。以前,重复的键可能被错误地标识为不同的键,从而导致事务具有不正确的依赖关系,因此可能会以错误的顺序执行。(Bug #26277771, Bug #86078)复制:当
transaction_write_set_extraction
选项,如果发生并发DDL,则在收集外键时存在不必要的序列化风险。Group Replication现在利用新的数据字典与表定义和外键交互,这解决了这种潜在的序列化问题。(错误# 26187850)复制:半异步复制的接收线程无法从使用主/从协议压缩(
slave_compressed_protocol =对
).接收线程现在正确地处理压缩确认。(Bug #26027024, Bug #86230)复制:的
mysql_reset_connection ()
函数现在清除写设置的会话历史。(Bug #25950554, Bug #86063)复制:在复制从机上,在
XA_STATE
字段events_transactions_current
,将XA事务的状态错误地报告为承诺
而不是准备
后XA准备
语句被应用于奴隶。(错误# 25940184)复制:在多源复制拓扑中,当从机上发生内存泄漏时
binlog_rows_query_log_events
在主服务器上启用,并且从服务器上跳过了已经从另一个通道应用的语句。在这种情况下,Rows_query
存储在从机上的日志事件未被删除。日志事件实例现在被清理,内存被释放。感谢Vlad Lesin对补丁的贡献。(Bug #25695434, Bug #85371, Bug #85034)复制:对性能架构的查询
replication_applier_global_filters
而且replication_applier_filters
表显示了在复制从机上配置的全局和特定于通道的复制筛选器,这些表经过了优化,因此只有在筛选器更改时才生成视图。以前,为创建的每一行生成一个视图。(错误# 25694140)复制:在基于gtid的复制中修复了内存泄漏。为跳过或忽略的事件更新存储库表后,内存未被释放。(Bug #25656123, Bug #85251)
复制:当一个多线程从线程上的一个工作线程未能应用一个事务,而这个事务是后面的事务所依赖的,协调线程可以在收到问题通知之前开始调度这个依赖的事务。如果一个
停止奴隶
请求在此情况下发出,它会导致在调试构建中引发断言。(错误# 25585436)复制:当
group_replication_enforce_update_everywhere_checks =对
Group Replication插件检查是否存在外键级联,并禁止对这些表进行更新。然而设置为空
操作没有被检查,这可能会导致数据不一致。现在,当group_replication_enforce_update_everywhere_checks =对
,对子表的操作将阻塞,如果表具有设置为空
选择配置。(错误# 25404162)复制:在Windows上,组复制生成的错误现在包含详细的错误消息,而不仅仅是错误编号。(错误# 24918678)
复制:使用基于语句的复制时,如果
更新
或删除
语句在XA事务中使用,以Xa提交一个阶段
,并且语句没有影响任何行,则发生复制错误。一个XA结束
语句没有写入二进制日志,因此从服务器在提交请求时将XA事务标识为仍处于活动状态。所需的XA结束
语句现在被写入,即使事务不影响任何行。(Bug #24812958, Bug #83295)复制:混合格式复制的行为(
binlog_format =混合
)临时表已经改变。以前,在使用混合格式的二进制日志记录时,如果一条语句是按行记录的,并且执行该语句的会话有任何临时表,那么所有后续语句都被视为不安全的,并以基于行的格式记录,直到该会话使用的所有临时表都被删除。另外,在具有的复制从机上log_slave_updates
启用后,在连接期间,基于行的日志记录在所有后续会话中不正确地继续进行,正如bug中报告的那样。现在,当使用混合二进制日志格式时,只使用临时表的语句不会被记录。混合使用临时表和非临时表的语句只会在主服务器上记录对非临时表的操作,而对临时表的操作不会记录。如果临时表的创建使用基于语句的格式记录在二进制日志中,则会出现例外。在这种情况下,a
如果存在临时表,删除临时表
语句在删除临时表时记录在主服务器上。通过这种行为更改,会话中不涉及临时表的其余语句不再需要被视为不安全的。安全语句现在以基于语句的格式记录,而不安全语句则按照混合格式复制的正常行为以基于行的格式记录,而不管会话中是否存在临时表。此外,bug中报告的问题也得到了修复,因此使用该连接的后续会话现在将使用适当的会话日志格式,而不考虑早期会话使用的格式。
当
binlog_format
是行
或声明
,行为还是和以前一样。对于基于行的二进制日志记录格式,对临时表的操作不记录日志,除如果存在临时表,删除临时表
声明为混合格式。对于基于语句的二进制日志格式,如果涉及临时表的语句可以使用基于语句的格式安全地记录日志,那么对临时表的操作将被记录在主服务器上,并在从服务器上复制。binlog_format =声明
是现在唯一的将临时表复制到从机上的日志记录模式。您现在不能更改
binlog_format
设置从行
或混合
来声明
在运行时,因为任何创建临时表
在前一种模式下,语句将从二进制日志中省略。你仍然可以从声明
来行
或混合
格式,即使已经创建了临时表。感谢来自Percona的George Lorch和Laurynas Biveinis的补丁。(Bug #18843730, Bug #72475)
复制:属于一个组的所有服务器必须具有唯一的uuid
server_uuid
,但是Group Replication没有强制这样做,并且可以添加具有重复uuid的成员。(Bug #88452, Bug #27105803)复制:在加入组的分布式恢复过程中,当应用程序发出已应用所有事务的信号时,它也在盲目地搜索部分事务。这是为了避免将来的应用程序错误,如果应用程序在此停止,就会发生错误。但是,这种搜索和删除只对应用程序停止情况有意义。一旦执行完成,就不应该这样做,否则会破坏或清除应用程序中继日志,从而导致数据丢失。为了解决这个问题,当应用程序等待执行完成时,它不再搜索和删除部分事务。(Bug #88304, Bug #27049034)
复制:在启动和停止插件期间,Group Replication在服务器上执行内部操作,例如使用内部会话启用或禁用只读模式。当这个内部会话打开时,如果总会话数超过了允许打开的会话数
max_connections
,操作如预期的那样失败,但留下了一个线程,这稍后会导致问题。(Bug #88182, Bug #27008102, Bug #27016552)复制:如果将Group Replication配置为在服务器启动时启动,则初始化服务器使用
——初始化
或——initialize-insecure
,因为复制应用程序基础结构未初始化,所以会产生断言。现在,在初始化服务器时不会启动组复制。(Bug #87759, Bug #26802395)复制:在负载较重的组中,加入成员可能需要检索大量数据以获得与组的同步。如果检索的数据量超过
View_change
数据包大小为4Mb的成员将无法加入组并进入错误
状态。现在,包的大小取自slave_max_allowed_packet
,默认为1GB。根据组处理的负载,您可能希望通过配置进一步增加包大小slave_max_allowed_packet
.(Bug #87701, Bug #26770576)复制:在一个组中,加入的成员一直收到事务,加入的成员有时不能进入在线状态。这是由于测试传入消息队列的方式造成的。(Bug #87631, Bug #26731317)
复制:在启动或停止插件时对Group Replication变量的更改没有被正确验证。现在,只有在插件不改变状态的情况下,变量才能被改变。(Bug #86874, Bug #26372117)
复制:不管一台机器上配置了多少个虚拟ip地址,组复制只能访问前12个地址。(Bug #86772, Bug #26324852)
复制:改进了用于服务器启动的延迟初始化机制。现在,它只阻塞连接,直到服务器进入读模式。(Bug #86271, Bug #26037344)
参考资料:请参见:Bug #84731, Bug #25475132。
复制:当一个主成员(例如单主组或多主组中的主成员)停止时,异步复制通道将继续应用更改,该成员也具有向其提供数据的异步复制通道。虽然
super_read_only
正在设置的时候停止GROUP_REPLICATION
,这不会停止任何已经在运行的异步复制通道。这意味着可以在成员上本地进行更改,并且必须手动停止异步复制通道。现在,当组复制停止时,不管是由于错误还是何时停止GROUP_REPLICATION
发出时,将停止所有异步复制通道。(Bug #86222, Bug #26024253)复制:组复制的日志记录得到了改进。现在,日志记录包括成员何时加入或离开、视图何时更改等信息。(Bug #84798, Bug #25495393)
参考资料:请参见:Bug #26422857。
Linux:在高山的Linux,mysql如果其标准输出不可写,则将失去与服务器的连接。同时,为mysql而且, mysqldump,结果刷新的顺序
stdout
而且stderr
现在是确定的。(错误# 27169809)参考资料:请参见:Bug #17583。
微软的Windows操作系统:在Windows上,使用
myisam_use_mmap
而且冲洗
启用系统变量,MyISAM
没有总是正确地刷新表文件。(错误# 26880757)JSON:用作参数的JSON表达式
滞后()
函数的计算并不总是正确的。(错误# 26740557)JSON:重复执行已准备好的语句
JSON_ARRAY ()
没有正确处理。(错误# 26704312)这个问题是:Bug #25867454的回归。
JSON:当执行
JSON_INSERT ()
函数中,为确定给定的插入是否正在根元素中执行的检查将测试路径的长度是否为1——也就是说,该路径是否包含确定插入的元素在根元素中的位置的单个分支。当在路径的开头有自动包装的路径分支时,就会出现一个问题,在这种情况下,长度大于1的路径也可能指向根中的一个元素,因此检查路径长度并不能可靠地告诉我们插入的目标元素是根还是其他元素。为了解决这个问题,检查根元素的路径长度被替换为检查匹配的元素是否有父元素;如果没有,它必须是根元素。(错误# 26649978)
这个问题是一个回归:Bug #86213, Bug #26022576。
JSON:在将JSON值序列化为二进制表示形式时,必须确保目标缓冲区有足够的空间容纳所需大小的整数或双精度值。这个缓冲区的分配之前只保留了所需的最小内存量,这使得之后很可能很快就需要重新分配。这可能会对性能产生负面影响,尤其是在序列化带有许多数值的数组时。现在执行序列化的方式是,分配以指数方式增加目标缓冲区大小,这减少了处理大型数组时执行此任务所花费的时间。(Bug #88656, Bug #27171283)
JSON:当将JSON文档转换为字符串表示时,可以表示没有小数部分的浮点值,这样它们就可以与整数区分开来。当这种JSON文档的字符串表示再次通过JSON解析器传递时,原先指定为浮点值的数值信息就丢失了。
为了纠正这个问题,如果JSON文档中的浮点值没有小数部分且没有使用科学格式表示,那么将在该值的字符串表示中添加小数部分。这使得浮点值的字符串表示形式与整数的字符串表示形式不同,因此即使再次解析字符串,它仍然被视为浮点数。
这个修复也使
ST_GeomFromGeoJSON ()
使用与其他JSON函数相同的JSON解析器,而不是像MySQL 5.7.8以来那样使用自己的自定义解析器;这种特殊的处理方式是因为ST_AsGeoJSON ()
删除了负0的小数部分(-0而不是-0.0),导致JSON解析器将-0解释为整数0,从而失去了正0和负0之间的区别。自ST_AsGeoJSON ()
现在使用标准JSON解析器,它正确地表示负0,就像-0.0一样,省去了任何需要ST_GeomFromGeoJSON ()
在解析输出时,单独显式地保留负0ST_AsGeoJSON ()
.(Bug #88230, Bug #27028889)参考资料:请参见:Bug #19504183。
JSON:当插入
JSON
的结果创建的值集团
查询时,插入的值有时可能包括以前插入到该列的所有值的连接。(Bug #87854, Bug #26867509)JSON:当使用从JSON文档中提取的字符串作为参数调用时
领导()
而且滞后()
函数为每一行返回相同的值。(Bug #87839, Bug #26848089)JSON:控件中每个直方图中最后更新字段的微秒部分
INFORMATION_SCHEMA。COLUMN_STATISTICS
当将直方图序列化为JSON时,表(显示最近更新的直方图)被删除,因此不存储。(Bug #87833, Bug #26846289)JSON:当一个
JSON_SET ()
语句更新JSON
值使用部分更新变为相同的值(换句话说,当部分更新本质上是一个无操作
),就有可能产生此操作的逻辑差异,即使没有产生二进制差异。在这种情况下,既不生成逻辑更新,也不生成二进制差异。(Bug #87113, Bug #26483625)JSON:在实现JSON部分更新之后,相同的JSON文档在主和从端可以有不同的二进制表示。如果发生这种情况,可能会导致基于行的复制(使用二进制等式在从机上查找匹配的行)失败。现在使用JSON文档的字符串表示来进行比较。
同样,由于这个修复,更新可以跳过比以前更多的情况下;如果二进制表示发生了变化,但文档的内容没有发生变化,则可以这样做。(Bug #86532, Bug #26177130)
不再支持Ubuntu 14.04和Debian 8。(错误# 27422291)
对于启用了未定义行为杀毒程序的32位平台上的构建,堆栈溢出检查可能导致服务器退出。(错误# 27224961)
当另一个会话正在使用空间引用系统(SRS)时,服务器可能在创建空间引用系统(SRS)期间挂起。(错误# 27220467)
在不涉及表权限的特权检查操作中,不必要地获取了特权缓存的锁。(错误# 27197483)
坚持只读
gtid_owned
或gtid_executed
系统变量导致服务器启动时断言失败。这些变量不能再被持久化。(错误# 27193853)插件加载和卸载处理不当可能导致服务器退出。(Bug #27151550, Bug #88589, Bug #27116827, Bug #88483)
一些窗口函数的错误传播并不总是正确执行。(Bug #27135084, Bug #27136492)
内部函数没有正确处理一些非常大的值的否定。(错误# 27134168)
在执行涉及日期间隔的加法时设置了更严格的检查。(错误# 27134148)
最近引入的SRID和COLUMN_STATISTICS元数据锁没有被性能模式测量。(错误# 27124506)
派生表的名称在表被物化之前没有保存,并被分配为临时表的名称。稍后,当试图重置表名时,由于缺少对该名称的原始值的引用,这会导致服务器失败。(错误# 27121663)
上使用索引的性能架构查询
OBJECT_TYPE
列可能返回不正确的结果。(错误# 27121500)编译和
-DWITH_ASAN = 1
而且-DWITH_ASAN_SCOPE = 1
检测到作用域后堆栈使用内存错误。(Bug #27108794, Bug #88460)文件
特权检查已准备选择……到输出文件
语句是不正确的。(错误# 27094955)一些具有信息优先级的消息被写入错误日志时
log_error_verbosity
小于3。(错误# 27082862)的
ha_create_table_from_engine
函数未能将表对象传递给ha_create
例行公事。(错误# 27066335)在估计内存需求时,不包括按未使用窗口定义的元素进行分区和排序。这可以通过分配解析上下文(
CTX_WINDOW
),但仅当当前上下文是CTX_NONE
.作为此修复的一部分,在检查语法和语义错误后,将删除未使用的窗口定义。(错误# 27062031)集团
与一个汇总
生成零
没有正确处理。(错误# 27060420)在事件过期时禁用全局自动提交的事件调度器事件会引发断言。(Bug #27041552, Bug #88255)
如果更改了排序规则,则字符串值用户定义变量的长度计算可能不正确。(Bug #27041543, Bug #88256)
创建表……选择
语句试图创建一个非InnoDB
如果预先存在的视图引用了要创建的表,则Table将引发断言。(Bug #27041536, Bug #88258)当用作
如果()
函数a的值时间戳
列可以针对不同的排序规则进行不同的处理。(Bug #27041526, Bug #88259)对于基于语句的二进制日志记录,使用
创建表……选择
创建一个黑洞
表导致引发断言。(Bug #27041516, Bug #88260)对于调试版本,a
时间戳
相关的断言可以提出explicit_defaults_for_timestamp
启用。(Bug #27041502, Bug #88261)下
锁表
在这种情况下,如果一条语句与锁外键关系中的表所处的模式不兼容,那么尝试在带有外键的表上执行DML语句将导致断言失败。(Bug #27041477, Bug #88264)与一个
锁表
语句活动时,从INFORMATION_SCHEMA。文件
表可能引发试图获取元数据锁的断言。(Bug #27041452, Bug #88266)组件安装没有正确执行自动递增处理,这可能导致服务器退出。(Bug #27041374, Bug #88276)
与
big_tables = 1
而且character_set_connection = ucs2
,显示表状态
可以提出一个断言。(Bug #27041323, Bug #88279)当备份锁处于活动状态时,允许不正确地删除二进制日志文件和中继日志文件。(Bug #27030339, Bug #88238)
当在非覆盖二级索引的扫描中计算结束范围条件时,并且结束范围条件引用了一个已索引的虚拟列,
InnoDB
有时从索引中读取错误的列,这可能会导致断言失败或错误的结果。(错误# 27010089)在
事件
筛选规则中的项audit_log
插件没有正确处理指定为的值JSON
数组中。(错误# 27010045)在添加日期值时,有时可能会出现整数溢出,并可能返回无效结果。(错误# 27004806)
一些窗口函数包括
NTH_VALUE ()
没有回复零
在所有他们应该有的情况下。(错误# 26975882)的临时参数之一
至少()
或最大的()
是类型的DATETIME
,但聚合的数据类型不是VARCHAR
或者是暂时的至少()
或最大的()
项具有为其设置的临时属性,尽管它不是临时数据类型。的时态属性至少()
或最大的()
项,包括它的分数精度,因此没有正确计算,导致在语句执行的稍后点失败。的数据类型
至少()
或最大的()
如果其参数的一个或多个(但不是全部)为临时类型,而不管其聚合的数据类型如何,则现在临时设置为临时类型。(错误# 26975864)IFNULL ()
在处理多个参数时,不总是正确地检查错误。(Bug #26975848, Bug #27062796, Bug #27062694)在启用了客户端/服务器协议的压缩后,逻辑数据包的大小是原来的数倍
0 xffffff
可能导致连接被断开。多亏了Facebook Inc.的补丁。(Bug #26974113, Bug #88092)在多个会话中多次安装和卸载一个插件可能会导致服务器失去响应。(错误# 26946491)
虚拟列定义中包含了一个在MySQL 8.0中删除的函数,导致启动失败”没有数据库选择”在MySQL 5.7的数据目录上启动MySQL 8.0时出现错误。(Bug #26945125, Bug #88040)
这些错误发生在MySQL 5.7到8.0的就地升级之后:
启动服务器
——explicit-defaults-for-timestamp = 0
设置返回一个'cached_time'的默认值无效错误。以以下方式启动服务器
——初始化
而且——explicit-defaults-for-timestamp = 0
配置设置返回'SET_TIME'错误的默认值无效.
(Bug #26944731, Bug #88039, Bug #26948678, Bug #88032)
使用包含窗口函数的公共表表达式和派生表或视图进行查询会产生不正确的结果。(Bug #26907753, Bug #87939)
对使用的不赞成使用警告进行了澄清
——符号链接
而且——skip-symbolic-links
服务器选项(及其等价)。方法调用时,服务器不再发出丢失数据目录的警告——帮助
选择。(Bug #26898576, Bug #87913)值()
在某些情况下没有得到正确处理。(错误# 26881946)参考资料:请参见:Bug #19601973, Bug #17458914。
MySQL集群的表空间发现机制被禁用,导致当表存在于存储引擎字典而不在MySQL数据字典中时,无法将序列化的字典信息导入数据字典。(错误# 26867488)
对于调试版本,可能会错过对相关生成列的验证检查
更新
语句,导致服务器退出。(错误# 26838771)对于窗口函数,可能会产生一个错误,即当窗口被定义时,它没有被定义。(Bug #26813454, Bug #87780)
当确定物化派生表是多余的时,删除相应对象的例程会使其处于不一致的状态。在这种情况下,派生表
TABLE_LIST
对象在其物化对象被删除后保持一致状态,通过将其表指针设置为零
.(错误# 26798989)使用的查询获得了不正确的结果
MAX ()
和一个有
子句,在视图中使用。(错误# 26781725)对于视图基础表的定义更改的元数据锁定可能与表上其他语句的元数据锁定不一致。(错误# 26770836)
在MySQL 8.0中,视图列名被限制为64个字符。在升级到8.0的过程中,带有较长列名的MySQL 5.7视图被标记为无效。现在,这样的视图在升级期间会产生一个错误,必须在升级成功之前修改为具有合法的列名。(Bug #26743291, Bug #87650)
并发调用
GET_LOCK ()
即使等待时间为0,也可能导致死锁。(Bug #26739438, Bug #87620)FROM_UNIXTIME ()
不总是正确地工作滞后()
.(错误# 26739028)后一个
插入
声明与团
中的值关于重复密钥更新
子句因违反约束而失败,则没有理由返回错误的类似语句可能导致服务器退出。(错误# 26734162)性能模式现在存储重写的SQL语句文本,而不是原始的SQL语句文本。(错误# 26732229)
重新执行使用窗口函数的预处理语句可能导致服务器退出。(错误# 26730020)
如果表中包含5.0以前的列,那么就地升级到MySQL 8.0会导致服务器退出
小数
数据类型。不支持此数据类型,因此升级现在会检测到此类列,并警告不能进行就地升级。受影响的表必须通过转储和恢复升级。(错误# 26727481)用于对数据字典缓存哈希映射中的键进行排序的比较操作符错误地确定了不同存储引擎使用的两个存储引擎私有id是相等的。(错误# 26723442)
中的值
XID_GTRID
列events_transactions_current
表对于XA事务显示不正确。(Bug #26710081, Bug #87559)可能会导致不正确的结果或服务器退出
SHA2 ()
在某些字符集中传递了一个用户定义的变量。(错误# 26704451)mysqlpump不再包括
SQL_NO_CACHE
修饰符,因为该修饰符现在已被弃用,并导致弃用警告。(错误# 26694675)如果在半连接中为重复清除设置临时表时发生错误(例如,因为磁盘已满),服务器不会以适当的错误消息优雅地终止。
现在,如果临时表没有成功创建,查询就会中止。(错误# 26679983)
服务器在执行后并不总是正确地清理
在
使用散列半连接的子查询。(错误# 26679495)建筑与
-DWITHOUT_SERVER =对
CMake选项失败,因为试图链接authentication_ldap_sasl_client
针对嵌入式服务器库的客户端插件。(错误# 26665217)在创建数据目录或从MySQL 5.7升级到8.0的过程中,如果在MySQL中启动服务器,则会由于Performance Schema初始化失败而导致服务器启动失败
read_only
模式。此外,信息模式元数据在启动时不更新,存储性能模式和信息模式版本信息时没有验证是否创建了模式表。用于数据字典和信息架构系统视图的版本控制方案现在与性能架构版本控制方案一致。(Bug #26636238, Bug #87436)
的
CREATE_OPTIONS
列INFORMATION_SCHEMA。表
表格显示的信息不正确。(错误# 26634507)对于使用外部连接和引用的派生表的查询,可能返回不正确的结果
常量
值来自外部联接的内部表。(错误# 26627181)后更新
未为此调用触发器插入……关于重复密钥更新
当要更新的值与新值相同时。(Bug #26626277, Bug #87371)将匿名角色分配给
mandatory_roles
不正确地允许系统变量。另外,赋值给mandatory_roles
现在需要ROLE_ADMIN
特权,除了SYSTEM_VARIABLES_ADMIN
或超级
权限通常需要设置一个全局系统变量。(错误# 26576989)服务器回退到使用内置错误消息,如果
lc_messages_dir
值在服务器启动时无效,但if时无效lc_messages
或lc_time_names
是无效的。现在,如果这些变量中的任何一个在启动时无效,服务器将使用内置消息。(错误# 26576922)设置默认角色all
中命名的角色不包括mandatory_roles
系统变量。(错误# 26571995)在Windows上,CMake没有自动为一些Visual Studio版本添加x64工具链支持。(错误# 26566360)
属性的派生表可能会出现问题
命令
子句合并到一个外部查询中,当从命令
也没有在外部查询中引用。(错误# 26542829)当在同一个模式中并行创建表时,将模式SDI并行插入到SDI b -树中可能会引发断言。(Bug #26539665, Bug #87225)
改变了
UMASK
而且UMASK_DIR
使用默认值的环境变量对数据库目录和表文件访问没有影响。(错误# 26529942)对于调试版本,派生表列引用的可空性评估不正确可能导致
CONCAT ()
提出断言(错误# 26524721)多个线程同时尝试注册和注销元数据性能架构对象,或获取和释放元数据锁,可能会导致服务器退出。(错误# 26502135)
安装Microsoft Visual c++ 2010重分发包时,无法检测用于Windows的MSI包。(Bug #26501092, Bug #87139)
对包含的表使用窗口函数的查询
团
列可能导致服务器退出。(错误# 26496880)属于插件的持久化变量在服务器启动时并不总是被正确处理。(错误# 26495619)
使用的查询可能会出现服务器退出
DISINCT
而且ORDER BY……限制
和使用范围访问和临时表执行命令
.(错误# 26483909)如果将相关的系统变量设置为无效值,LDAP身份验证插件可能会失败。(错误# 26474964)
针对RHEL6及更高版本的Linux RPM规范文件进行了更新,并添加了建议安装RHEL6的注释
redhat-rpm-config
包添加方便的宏,使重新构建RPM包更容易。感谢西蒙·马德的补丁。(Bug #26474153, Bug #87098)如果错误日志配置错误,服务器无法启动,则不会产生描述问题的输出。(Bug #26447825, Bug #87087)
当对一个物化半连接操作求值不止一次,并且物化中的一个表是
常量
表(即使用连接类型JT_CONST
),在第二次实体化期间引用时访问了无效数据常量
表格(错误# 26436185)对于使用外部身份验证方法的身份验证插件,密码过期选项不能正确工作。(错误# 26435766)
添加一个
命令
对于包含外部连接和子查询的查询,如果子查询返回0行,则会导致为子查询中的列定义的常量值被错误地提升为常量值。(错误# 26432173)为
自动提交
系统变量,性能模式variables_info
表总是报告VARIABLE_SOURCE
列编译
.(错误# 26428017)为调试构建,
插入忽略
试图插入的语句零
成一个几何不空
列引发一个断言,因为没有有效的值可以转换零
出现。这现在被作为不可忽略项处理ER_BAD_NULL_ERROR_NOT_IGNORED
错误。(错误# 26412713)设置PERSIST_ONLY
改变了VARIABLE_SOURCE
列variables_info
表的时候不应该有。(错误# 26395134)服务器未能检查分区名称的最大路径长度。(错误# 26390632)
当具有缓冲的窗口跟随惟一索引上的相等连接时,就会出现问题,因为该窗口修改了输入记录,并假定下一次将控制权传递回连接时,将向输入记录读取一条新记录。在这种情况下,可以通过恢复输入记录来解决这个问题。(错误# 26389508)
包含反斜杠和反引号混合的标识符可能会被错误地解析。(错误# 26372491)
audit_log
插件野
对象的创建可能带有不正确的线程ID信息,导致断言失败。(错误# 26362452)的
柱状图
列column_statistics
数据字典表使用的键名为charset-id
表示排序规则编号。此键已重命名为collation-id
.(Bug #26330090, Bug #86794)启动服务器
skip_name_resolve
系统变量启用可能导致本地主机
在帐户条目中匹配非本地主机
主机。(Bug #26328274, Bug #26202411, Bug #86546)如果配置的错误日志服务存在但无法初始化,日志信息将丢失。现在,如果在启动时配置了日志服务,但不能初始化,则将有关问题的诊断信息发送到默认日志服务(如果失败,则直接发送到错误流),然后服务器退出。如果在运行时配置了日志服务,但不能初始化,则诊断将发送到客户端。(Bug #26286871, Bug #86728)
同时安装和卸载Performance Schema示例插件,并从与这些插件关联的表中删除这些插件可能会导致服务器退出。(错误# 26281359)
当
HASH_SCAN
的值之一slave_rows_search_algorithms
系统变量(这是MySQL 8.0.2的默认值),并且使用了基于行的复制,对包含虚拟生成字段的表的更新可能会引发断言。该问题是由于在生成虚拟生成字段的字符串表示以便创建用于搜索的散列时出现错误引起的。为了解决这个问题,MySQL不再为虚拟生成的字段创建散列。(错误# 26280724)服务器允许
显示创建表
对于为全文搜索创建的非表文件。(错误# 26271244)为调试构建,
创建或替换视图
对于现有视图,将引发大于64个字符的列名断言。现在报告一个适当的错误。(错误# 26266789)设置保存
可能是无效的,因为写入的排序变量mysqld-auto.cnf
.变量现在按持久写入的顺序写入。(错误# 26259671)尝试使用mysqlpump在启用gtid的服务器上失败,并产生错误消息,错误地提示这是不可能的。(可以使用
——set-gtid-purged
选择。)(错误# 26199978)在*上授予授予选项。*
授予用户
GRANT选项
用于静态而非动态特权。撤销所有…从CURRENT_USER ()
取消了静态权限,但没有取消动态权限。(Bug #26191109, Bug #25658967)错误日志记录可能试图记录释放的消息,导致服务器退出。(Bug #26188656, Bug #86562)
一个
有
条件被优化为在没有聚合列上使用别名集团
条款。(错误# 26188578)ST_Crosses ()
如果至少有一个参数是几何集合,并且必须考虑几何集合的多个元素以确定几何是否交叉,则可能返回不正确的结果。(Bug #26188208, Bug #86559)MBROverlaps ()
两条相交的垂直线不正确地返回false。(Bug #26188118, Bug #86558)改变用户
产生一个错误。(错误# 26174169)用户
默认角色, mysqldump因大而异常退出
——
选项值。(Bug #26171967, Bug #86496, Bug #27510150)使用窗口函数的查询,该窗口根据聚合函数的结果进行分区或排序,该聚合函数的计算结果为
零
返回不正确的结果。(错误# 26164633)性能架构可能会由于未删除创建的文件实例而泄漏内存
ALTER TABLE
使用表复制算法的操作。(Bug #26152751, Bug #86482)创建临时表失败
取代
在某些情况下可能会在以后的声明中导致断言。(Bug #26126789, Bug #86422)mysqlpump没有正确解析
表空间
从句的结果来自显示创建表
语句,用于确定表结构。(错误# 26116415)的二进制文件
udf_example
在二进制发行版中省略了用户定义的函数。(Bug #26115002, Bug #29178542)长
设置保存
语句可能导致服务器退出。(错误# 26100122)一个错误的公式被用来计算结果字符串的最大长度为几个字符串函数:
报价()
,AES_DECRYPT ()
,WEIGHT_STRING ()
.这可能会影响,例如,创建的字符列的长度创建表……选择…报价()
.(Bug #26049942, Bug #86305)架构创建和删除操作可能会失败,原因是检查数据目录下的架构目录,而不是检查数据字典。(Bug #26043994, Bug #86282)
显示插件
没有处理正在终止的插件,导致服务器退出。该语句现在将插件的状态显示为删除
.(Bug #26029765, Bug #86243)有些语句可能导致摘要代码中的缓冲区溢出。感谢Laurynas Biveinis和Roel van de Paar的补丁。(错误# 26021187)
以前,当性能架构初始化失败时,它会编写一个非特定的初始化失败警告错误日志。现在它打印关于哪个内存分配失败的更具体的消息。(错误# 25996291)
当优化器选择Loose index Scan时,具有唯一索引的表可能会出现不正确的结果,即使这个唯一索引没有索引扩展。(Bug #25989915, Bug #86165, Bug #26532061, Bug #87207)
这个问题是一个回归:Bug #21749123, Bug #78244。
为
XA提交
,预提交处理可能会在诊断区域设置一个错误,该错误未在调用方正确报告,从而导致引发断言。(Bug #25978684, Bug #86142)的
MIN_VALUE
列variables_info
表显示32位大端平台上的错误值。(错误# 25967079)当优化器排除与临时表关联的子查询时,就会发生内存泄漏。(错误# 25951134)
当被认为是只读的视图或派生表有嵌套引用而不是只读引用时,可能会引发更新断言。(Bug #25832861, Bug #85796)
服务器自动生成的证书和密钥文件可能具有不正确的访问模式。(错误# 25832856)
查询的
INFORMATION_SCHEMA
表
而且统计数据
如果使用Index Condition Pushdown计算表,可能会下推内部数据字典函数,导致引发断言。(Bug #25820175, Bug #85765)ST_AsText ()
可以读取释放的内存。(错误# 25818451)如果不存在,请创建用户
如果用户存在,则未写入二进制日志。如果从服务器上不存在用户,这可能导致不一致的复制行为。类似的问题发生在Alter user(如果存在)
.为了避免不一致,这些语句现在被写入二进制日志。(Bug #25813089, Bug #85733)一个无效的
use utf8
输入字符串导致堆缓冲区溢出错误。(Bug #25811623, Bug #25946444)通过同时持久化来自多个会话的变量,竞争条件使服务器退出成为可能。(错误# 25768813)
插件可以创建或删除
INFORMATION_SCHEMA
表,但视图引用INFORMATION_SCHEMA
当插件被卸载或卸载时,表没有被验证。(Bug #25761992, Bug #85579)mysql写了一些与密码相关的语句到
.mysql_history
文件。(错误# 25750609)不正确的内部内存缓冲区处理可能导致服务器退出。(错误# 25737271)
在启用了gtid的只读服务器上,a
如果存在临时表,删除临时表
一条与不存在的表或过滤表相关的语句可能会向二进制日志写入一个不必要的事务,并创建一个不必要的GTID。在这种情况下,之前假定缺失的临时表是事务性的,从而导致语句被分割。现在,MySQL检查临时表是否存在删除临时表
语句记录在二进制日志中。如果不是这样,则不会创建GTID。感谢Laurynas Biveinis的贴片。(Bug #25656992, Bug #85258)在Windows上加载MeCab全文解析器插件失败。(错误# 25633175)
的
SET_TIME
列variables_info
表初始化错误。(错误# 25608115)执行一个存储过程,该存储过程包含一条语句,该语句根据特定对象的内容创建一个表
选择
语句可能导致内存泄漏。(错误# 25586773)性能架构检查客户端连接的最大主机长度失败。(错误# 25510805)
对于空间函数,当在不同的SRID中给出参数时,一些集合操作产生的结果为SRID 0。(错误# 25510403)
大
——ssl cipher
值可能导致客户端程序退出。(错误# 25483593)在准备存储过程调用期间缺少参数计数检查可能导致服务器退出。(Bug #25398451, Bug #84512)
如果MySQL
根
用户帐户已重命名,该查询访问了INFORMATION_SCHEMA
视图返回一个错误,指出指定为定义者的用户不存在。为了避免这个错误,一个新的保留帐户,“mysql.infoschema”@“localhost”
,现在是定义者
为INFORMATION_SCHEMA
的观点。(Bug #25185947, Bug #84027)当一个
更新
需要一个主键大于1024字节的临时表,并且该表是使用InnoDB
,服务器可以退出。(错误# 25153670)设置默认角色
不像其他帐户管理报表那样是事务性的。(错误# 25122897)mysqlpump
包括gtid_executed
的转储中的表mysql
系统数据库,导致gtid_executed
重新加载转储后,服务器重新启动时丢失的位置。mysqlpump
不再抛弃gtid_executed
表格(错误# 25109007)对于几何计算,无效的输入参数可能导致错误的结果缓冲区,并导致引发断言或服务器退出。(错误# 25062396)
IFNULL(小数,int)
在包含的查询中使用时,可能会丢失小数点后的一位数集团
并使用临时表执行。(Bug #25051195, Bug #83699)对于某些查询,例如涉及
联盟
,列宽为GROUP_CONCAT ()
会不会计算错误,导致应用错误group_concat_max_len
.(Bug #25050090, Bug #83667)性能架构的事件审计日志记录
global_variables
改进了表,以便不报告物化行的事件,但不报告给SQL层。(错误# 24970428)ST_Buffer ()
可能会返回无效结果,或对一些本应产生有效输出几何图形的输入引发错误。(Bug #24947868, Bug #26735293, Bug #25662426)对于启用了address杀毒器或未定义行为杀毒器的构建,在性能架构计时器初始化期间可能会发生除零。(错误# 24785784)
严重依赖元数据锁定(MDL)子系统的操作会导致性能下降。在MDL票证数量较多的情况下,遍历MDL票证列表耗时较长。(Bug #24734971, Bug #83143)
当
binlog_format
是行
或混合
,对临时表的操作不记录日志。以前,该规则的例外是当连接在会话结束时终止时,语句如果存在临时表,删除临时表
记录会话中打开的任何临时表。对于基于行的复制,这种行为导致对二进制日志进行不必要的写入,并为启用了这些的GTID添加了一个事务序列号。现在,当在会话中创建临时表时,将跟踪二进制日志记录格式。的
如果存在临时表,删除临时表
语句只在会话结束时记录日志,如果在创建临时表时基于语句的格式有效,那么创建临时表
声明中被记录。如果在创建表时正在使用基于行或混合格式的二进制日志记录,则如果存在临时表,删除临时表
语句不记录日志。感谢Laurynas Biveinis的贴片。(Bug #24670909, Bug #83003, Bug #28606948)
并发
插入
,ALTER TABLE
,删除数据库
操作可能会导致死锁。(Bug #24510948, Bug #82704)在某些情况下,
audit_log
插件会递归地锁定互斥锁,导致服务器无响应。(错误# 24437533)在某些情况下,优化器选择松散索引扫描(
QUICK_GROUP_MIN_MAX_SELECT
)集团
查询,即使有分离谓词。方法中的条件时,通过不执行范围扫描来修复此问题在哪里
子句导致多个不相交的范围树。(错误# 24423143)当优化器在生成的列上选择索引来获取值时,可能会出现不正确的结果。(Bug #24345509, Bug #29451999)
现在所有的调试符号包都包含在其中
恰当的
(Bug #24008883, Bug #27990381)与
SQL_MODE = "
,UNIX_TIMESTAMP (COUNT (1))
返回零
而不是预期的0。(错误# 23529242)从具有索引虚拟表的表中删除行时
团
列的非空
约束,生成的列表达式的值为零
在要删除的行之一中,将零
对其非空
未正确执行等效操作。(错误# 23321196)参考资料:请参见:Bug #23037025, Bug #21345972。
设置
MYSQL_GROUP_SUFFIX
环境变量没有影响。(错误# 23072792)在生成的列求值期间缺少错误处理检查可能导致服务器退出。(错误# 23021693)
为了检查一张桌子是否空着,
ALTER TABLE
执行表扫描,效率很低。(错误# 22688065)获取表空间元数据锁失败
ALTER TABLE
当一个锁表
的激活可能会引发断言。(Bug #22486020, Bug #79820)当常量表达式包含要替换的列的引用时,将不再执行常量传播。(错误# 20964700)
如果使用了连接缓冲(例如,使用块嵌套循环算法),那么具有许多左连接的查询会很慢。(Bug #18898433, Bug #72854)
正则表达式
之后未能找到匹配\ 0
字符串表达式中的字符。(Bug #17541193, Bug #70470)从涉及聚合和的视图中进行选择
与汇总
可能导致虚假列col_name
不能为空错误。(Bug #11755860, Bug #47693)合并()
可以改变的值浮动
字段。(Bug #11751705, Bug #42666)在某些情况下,服务器用于确定是否使用采样的行估计可能不准确。这是因为直方图过程假设表中行数的估计是当前的,尽管它没有被(例如)更新。
插入
或删除
语句。现在,直方图进程请求更新的行数。(Bug #88710, Bug #27197709)不能杀死长时间运行的正则表达式匹配。(Bug #88676, Bug #27183583)
一个优化器
SET_VAR
提示(见可变设定提示语法)设置cte_max_recursion_depth
被忽视了。(Bug #88594, Bug #27153338)在处理距离帧时,如果找到了距离帧的第一行,则不存储其位置。这可能会导致稍后无法从帧缓冲区检索该行。(Bug #88568, Bug #27149369)
服务器没有处理激活的触发器
加载数据
正确的时候——skip-log-bin
被启用。(Bug #88516, Bug #27128534)这个问题是:Bug #27041382的回归。
执行XA事务并对视图执行操作的存储过程没有被正确执行。(Bug #88326, Bug #27058931)
当一个表包含一个长度为零的列时,优化器在某些情况下可能会分配一个太小的记录缓冲区,以容纳查询读取的列。(Bug #88283, Bug #27041288)
包含无效语法的触发器,后跟
插入
未指定列列表的,无论如何都试图插入新行。(Bug #88274, Bug #27041382)窗口函数并不总是产生正确的结果
LAST_VALUE ()
帧有多个命令
表达式。(Bug #88186, Bug #27010574)对上一个问题的修复导致将聚合数据类型设置为
VARCHAR
当结果类型为string且列大小大于255个字符时(对于字符
).这导致了数据类型的问题,例如JSON
其结果类型是一个字符串,但字段值支持超过255个字符。在这种情况下,数据类型显式设置为VARCHAR
当聚合列为类型时字符
或二进制
(两者在内部都表示为字符串)但其大小超过了for的最大值字符
.(Bug #88073, Bug #26960106)这个问题是Bug #83895, Bug #25123839的回归。
准备好的语句,包含
命令
引用参数的列表并不总是被正确处理。(Bug #87863, Bug #26867652)DENSE_RANK ()
在使用缓冲区时,分区中的第一行无法正常工作,原因是对命令
.(Bug #87760, Bug #26802696)优化器选择了一个复合索引
裁判
只能使用密钥的第一部分的访问权限。复合键是合适的,但被认为成本较高。这是因为,在选择的时候裁判
访问和范围
我们更喜欢访问同一个索引范围
如果满足了某些条件,其中之一就是选择避免裁判
-访问如果它有一个过度乐观或不切实际的低成本可能发生的时候records_per_key
非常低。这样做即使行数的估计为范围
访问比估计更可靠裁判
访问。(Bug #87613, Bug #26727773)参考资料:请参见:Bug #23259872。
中使用存储函数时,将表列值作为参数
在哪里
谓词,其内部not_null_tables
属性错误地设置为非空值。如果将此谓词应用于外部连接操作,并且其中一个参数来自外部连接的内部表,则有时会(错误地)使用该谓词将外部连接转换为内部连接。根据SQL标准,只有具有对空输入返回空
属性应该以这种方式表现。因为MySQL目前没有实现这个属性,所以存储的函数被更改,它们不再实现对空输入返回空
的行为。(Bug #86922, Bug #26389402)控件定义时,视图或派生表包含不正确的数据
选择
对列进行聚合,并使用其结果进行过滤有
.(Bug #86840, Bug #26360114)服务器错误地处理触发器和生成列。(Bug #86637, Bug #26251621)
将结果分组在返回
团
(或基于的类型团
如JSON
)有时无法找到组边界,因此返回不正确的结果。(Bug #78787, Bug #21974696)