10bet网址
MySQL 8.0参考手册
相关的文档10bet官方网站 下载本手册 本手册节选

B.3.7 MySQL已知问题

本节列出MySQL最新版本中的已知问题。

有关特定于平台问题的信息,请参阅中的安装和调试说明2.1节“一般安装指南”,章节5.9,“调试MySQL”

已知以下问题:

  • 子查询优化是不是不如为有效

  • 即使你使用lower_case_table_names = 2(这使MySQL能够记住数据库和表名的大小写),MySQL不记住函数的数据库名的大小写数据库()或者在各种日志中(在不区分大小写的系统上)。

  • 放弃一个外键约束在复制中不起作用,因为约束在副本上可能有另一个名称。

  • 取代(和加载数据取代选项)不会触发删除级联

  • 截然不同的命令不能在内部工作GROUP_CONCAT ()类中的所有列,且仅使用这些列截然不同的列表。

  • 当插入一个大的整数值(介于263和264−1)在十进制或字符串列中,它被插入为负值,因为该数字是在有符号整数上下文中计算的。

  • 使用基于语句的二进制日志,源服务器将执行的查询写入二进制日志。这是一种非常快速、紧凑、高效的日志记录方法,在大多数情况下都能完美地工作。但是,如果查询被设计成数据修改不确定的方式,则源和副本上的数据可能会变得不同(通常不推荐这种做法,即使在复制之外)。

    例如:

    当且仅当前面的查询没有命令保证确定顺序的条款

    例如,对于插入……选择没有命令,选择可以以不同的顺序返回行(这导致行具有不同的排名,从而在AUTO_INCREMENT列),这取决于优化器对源和副本所做的选择。

    只有在以下情况下,查询才会在源和副本上进行不同的优化:

    • 该表使用源上与副本上不同的存储引擎存储。(可以在源和副本上使用不同的存储引擎。例如,你可以使用InnoDB在源头上,但是MyISAM如果副本的可用磁盘空间较少,则在副本上执行。)

    • MySQL缓冲区大小(key_buffer_size,等等)在源和副本上是不同的。

    • 源和副本运行不同的MySQL版本,这些版本之间的优化器代码也不同。

    此问题还可能影响数据库恢复的使用mysqlbinlog | mysql

    避免此问题的最简单方法是添加命令子句添加到前面提到的不确定性查询中,以确保始终以相同的顺序存储或修改行。使用基于行或混合的日志记录格式也避免了这个问题。

  • 如果未指定带有启动选项的文件名,则日志文件名将基于服务器主机名。若要在将主机名更改为其他名称时保留相同的日志文件名,必须显式使用以下选项——log-bin =old_host_name.看到第5.1.7节“服务器命令选项”.或者,重命名旧文件以反映主机名的更改。如果这些是二进制日志,则必须编辑二进制日志索引文件并修复二进制日志文件名。(副本上的中继日志也是如此。)

  • mysqlbinlog不删除临时文件后留下的加载数据声明。看到mysqlbinlog -处理二进制日志文件的实用程序

  • 重命名不适用于临时表或表中使用的合并表格

  • 当使用字符集,则不能在数据库、表和列名中使用翻译后的字符。

  • 在MySQL 8.0.17之前,您不能使用_逃避喜欢……逃避

  • 服务器只使用第一个max_sort_length比较数据值时的字节。这意味着值不能可靠地用于集团,命令,或截然不同的如果它们只在第一个之后不同max_sort_length字节。要解决这个问题,可以增加变量值。的默认值max_sort_length是1024,可以在服务器启动时或运行时更改。

  • 数值计算是用长整型数字(两者通常都是64位)。你得到的精度取决于函数。一般的规则是位函数是用长整型数字精度,如果()而且英语教学()长整型数字精度,剩下的精度。如果除位字段外的任何字段的解析值大于63位(9223372036854775807),则应该尽量避免使用unsigned long long值。

  • 你最多可以有255个枚举而且一个表中的列。

  • MIN (),MAX (),和其他聚合函数,MySQL目前比较枚举而且按字符串值列,而不是按字符串在集合中的相对位置列。

  • 在一个更新语句时,列从左到右更新。如果引用已更新的列,则获得更新后的值,而不是原始值。例如,下面的语句递增关键通过2,1

    mysql >更新tbl_name设置键=键+ 1,键=键+ 1;
  • 您可以在同一个查询中引用多个临时表,但不能多次引用任何给定的临时表。例如,以下命令无效:

    mysql> SELECT * FROM temp_table, temp_table AS t2;错误1137:不能重新打开表:'temp_table'
  • 优化器可以处理截然不同的当你使用的时候就不一样了隐藏的连接中的列比不连接时的列要好。在连接中,隐藏列被计算为结果的一部分(即使它们没有显示),而在普通查询中,隐藏列不参与查询截然不同的比较。

    一个例子是:

    SELECT DISTINCT mp3id FROM band_10bet手机中文版downloads WHERE userid = 9;

    而且

    选择不同的band_downloads。10bet手机中文版mp3id FROM band_10bet手机中文版downloads,band_mp3 WHERE band_downloads。userid = 9 AND band_mp3。Id = band_10bet手机中文版downloads。mp3id ORDER BY band_10bet手机中文版downloads。id DESC;

    在第二种情况下,您可能会在结果集中得到两个相同的行(因为隐藏的id列可能不同)。

    类型的查询才会发生这种情况命令结果中的列。

  • 如果你执行过程在返回空集的查询上,在某些情况下过程不变换列。

  • 类型表的创建合并不检查基础表是否为兼容类型。

  • 如果你使用ALTER TABLE要添加独特的类中使用的表的索引合并表,然后在上面添加一个正常索引合并表,键的顺序是不同的表,如果有一个旧的,非独特的输入表格。这是因为ALTER TABLE独特的在正常索引之前建立索引,以便能够尽早发现重复的键。