相关的文档10bet官方网站 本手册下载
PDF (Ltr)- 41.6 mb
PDF (A4)- 41.7 mb
手册页(TGZ)- 262.2 kb
手册页(邮政编码)- 372.3 kb
信息(Gzip)- 4.0 mb
信息(邮政编码)- 4.0 mb
本手册节选

MySQL 8.0参考手册/一般信息/如何报告错误或问题

1.6如何报告bug或问题

在发布关于某个问题的错误报告之前,请尝试验证它是一个错误,并且它还没有被报告:

  • 首先搜索MySQL在线手册在10bet网址 .我们试图通过对新发现的问题的解决方案进行频繁的更新来保持手册的更新。此外,手册附带的发行说明特别有用,因为很有可能新版本包含您的问题的解决方案。发布说明可以在刚刚为手册提供的位置上找到。

  • 如果遇到SQL语句的解析错误,请仔细检查语法。如果你找不到任何问题,很有可能是你当前版本的MySQL Server不支持你正在使用的语法。如果您使用的是当前版本,而手册没有涵盖您正在使用的语法,MySQL服务器不支持您的语句。

    如果手册涵盖了您正在使用的语法,但您有一个较老版本的MySQL Server,您应该检查MySQL更改历史,以查看语法是何时实现的。在这种情况下,您可以选择升级到MySQL Server的新版本。

  • 有关一些常见问题的解决方案,请参见B.3节“问题及常见错误”

  • 搜索bug数据库http://bugs.10bet靠谱mysql.com/查看该错误是否已报告并修复。

  • 你也可以用http://www.10bet靠谱mysql.com/search/搜索MySQL网站上的所有网页(包括手册)。

如果您在手册、bug数据库或邮件列表档案中找不到答案,请与本地MySQL专家联系。如果您仍然无法找到问题的答案,请使用以下指导方针报告错误。

报告错误的正常方法是访问http://bugs.10bet靠谱mysql.com/,这是我们的bug数据库的地址。这个数据库是公开的,任何人都可以浏览和搜索。登录后,可以输入新的报表。

在错误数据库中发布的错误http://bugs.10bet靠谱mysql.com/在版本说明中注明了为给定版本更正的内容。

如果您发现MySQL服务器的安全漏洞,请立即通过发送电子邮件通知我们.异常:支持客户应该向Oracle Support报告所有问题,包括安全bughttp://support.oracle.com/

要与其他用户讨论问题,可以使用MySQL社区松弛

写一份好的bug报告需要耐心,但是第一次就把它做好可以为我们和你自己节省时间。一个好的bug报告,包含一个完整的bug测试用例,使得我们很有可能在下一个版本中修复bug。这个部分帮助你正确地写你的报告,这样你就不会浪费你的时间去做那些可能对我们没有太大帮助或者根本没有帮助的事情。请仔细阅读此部分,并确保这里描述的所有信息都包含在您的报告中。

最好在发布之前使用MySQL Server的最新产品或开发版本测试问题。任何人都应该能够通过使用重复错误Mysql测试< script_file或者通过运行包含在错误报告中的shell或Perl脚本。我们能够重复的任何错误都有很大的机会在下一个MySQL版本中被修复。

在错误报告中包含对问题的良好描述是最有帮助的。也就是说,给出一个好例子,说明你所做的所有导致问题的事情,并精确详细地描述问题本身。最好的报告是那些包含一个完整的示例来显示如何重现错误或问题的报告。看到第5.9节,“调试MySQL”

记住,我们可能会对包含太多信息的报告作出回应,但不会对包含太少信息的报告作出回应。人们经常忽略事实,因为他们认为他们知道问题的原因,并认为一些细节并不重要。一个很好的原则是,如果你对陈述某件事有疑问,那就说出来。如果我们必须要求您提供最初报告中缺失的信息,那么在报告中多写几行比等待更长的时间更快、更不麻烦。

错误报告中最常见的错误是(a)不包括您使用的MySQL发行版的版本号,(b)没有完全描述MySQL服务器安装的平台(包括平台类型和版本号)。这些都是高度相关的信息,在100个案例中有99个没有它们的bug报告是无用的。我们经常会遇到这样的问题,为什么这对我不起作用?然后我们发现所请求的特性在那个MySQL版本中没有实现,或者报告中描述的一个bug在新的MySQL版本中已经修复。错误通常是平台相关的。在这种情况下,如果不知道操作系统和平台的版本号,我们几乎不可能修复任何东西。

如果从源代码编译MySQL,还记得提供与问题相关的编译器信息。人们经常在编译器中发现错误,并认为问题与mysql有关。大多数编译器一直在开发中,一个版本一个版本地变得更好。要确定问题是否取决于编译器,我们需要知道您使用了什么编译器。请注意,每个编译问题都应该被视为错误并相应地报告。

如果程序产生错误消息,在报告中包含该消息是非常重要的。如果我们试图从归档中搜索一些东西,最好报告的错误消息与程序生成的错误消息完全匹配。(甚至连字母的大小写也要注意。)最好将整个错误消息复制并粘贴到报告中。永远不要试图从记忆中复制信息。

如果连接器/ODBC (MyODBC)有问题,请尝试生成一个跟踪文件并将其与报告一起发送。看到如何报告连接器/ODBC问题或bug

方法运行的测试用例,如果您的报告包含较长的查询输出行mysql命令行工具,可以使输出更具可读性——垂直选择或\ G语句结束符。的解释选择的使用\ G

请在你的报告中包括以下信息:

  • 您使用的MySQL发行版的版本号(例如,MySQL 5.7.10)。您可以通过执行来了解您正在运行的版本mysqladmin版本.的mysqladmin程序可以在箱子目录下。

  • 遇到问题的机器的制造商和型号。

  • 操作系统名称和版本。如果您使用Windows操作系统,您通常可以通过双击“我的电脑”图标并下拉帮助/窗户菜单。对于大多数类unix操作系统,您可以通过执行该命令获得此信息uname -

  • 有时内存的数量(实内存和虚内存)是相关的。如果有疑问,请包括这些值。

  • 的内容文档/ INFO_BIN从MySQL安装文件。该文件包含关于MySQL如何配置和编译的信息。

  • 如果您使用的是MySQL软件的源代码发行版,请包括所使用的编译器的名称和版本号。如果您有一个二进制发行版,请包括发行版名称。

  • 如果问题是在编译过程中发生的,在发生错误的文件中包含确切的错误消息和错误代码周围的几行上下文。

  • 如果mysqld死亡,你还应该报告造成的陈述mysqld意外退出。你通常可以通过运行来获得这些信息mysqld启用查询日志记录,然后在日志中查找mysqld退出。看到第5.9节,“调试MySQL”

  • 如果数据库表与问题相关,则包含来自显示创建表db_nametbl_name错误报告中的语句。这是获取数据库中任何表的定义的一种非常简单的方法。这些信息帮助我们创造出与你所经历的情况相匹配的情况。

  • 问题发生时有效的SQL模式可能非常重要,因此请报告sql_mode系统变量。对于存储过程、存储函数和触发器对象,相关的sql_mode值是创建对象时有效的值。对于存储过程或函数,则显示创建过程显示创建函数语句显示相关的SQL模式,或者您可以查询INFORMATION_SCHEMA的信息:

    从信息模式中选择routine_schema, routine_name, sql_mode;

    对于触发器,你可以使用下面的语句:

    从information_schema.triggers中选择event_object_schema, event_object_table, trigger_name, sql_mode;
  • 用于与性能相关的bug或问题选择语句中,您应该始终包含的输出解释选择……的行数选择语句产生。还应该包括来自的输出显示创建表tbl_name对于所涉及的每个表。你提供的关于你的情况的信息越多,别人就越有可能帮助你。

    下面是一个非常好的错误报告示例。方法运行这些语句mysql命令行工具。注意的用法\ G语句结束符,用于提供非常长且难以读取的输出行的语句。

    mysql >显示变量;mysql>显示从< SHOW COLUMNS的输出>mysql>解释SELECT<输出解释>mysql >冲洗状态;mysql >选择…;< SELECT输出的简短版本,包括运行查询>所花费的时间mysql >显示状态; .
  • 如果在运行时发生错误或问题mysqld,尝试提供一个再现异常的输入脚本。这个脚本应该包括任何必要的源文件。脚本越接近地再现您的情况,效果越好。如果您可以制作一个可复制的测试用例,您应该将其上载到错误报告中。

    如果不能提供脚本,至少应该包括来自的输出Mysqladmin变量扩展状态进程列表在您的报告中提供一些关于您的系统如何执行的信息。

  • 如果您不能生成一个只有几行的测试用例,或者如果测试表太大,无法包含在错误报告中(超过10行),您应该使用, mysqldump并创建一个自述描述你的问题的文件。使用。创建文件的压缩存档焦油而且gzip邮政编码.在为我们的错误数据库初始化错误报告后http://bugs.10bet靠谱mysql.com/,单击错误报告中的Files选项卡,以获取将存档文件上传到错误数据库的说明。

  • 如果您认为MySQL服务器从一个语句产生了一个奇怪的结果,那么不仅要包括结果,还要包括您对结果应该是什么样子的看法,以及描述您的观点基础的解释。

  • 在提供问题示例时,最好使用实际情况中存在的表名、变量名等,而不是提出新的名称。问题可能与表或变量的名称有关。也许这种情况很少见,但谨慎总比后悔好。毕竟,您应该更容易提供一个使用您的实际情况的示例,而且它对我们来说肯定更好。如果您的数据不希望在错误报告中被其他人看到,您可以使用前面描述的Files选项卡上传它。如果该信息确实是最高机密,您甚至不想显示给我们,请使用其他名称提供一个示例,但请将此作为最后的选择。

  • 如果可能的话,包括给相关程序的所有选项。例如,指示启动时使用的选项mysqld服务器,以及用于运行任何MySQL客户端程序的选项。程序的选项,如mysqld而且mysql,以及配置脚本通常是解决问题的关键,而且非常相关。把他们包括进来从来都不是一个坏主意。如果您的问题涉及到用Perl或PHP等语言编写的程序,请包括语言处理器的版本号,以及该程序使用的任何模块的版本。例如,如果您有一个Perl脚本使用DBI而且DBD:: mysql模块,包括Perl的版本号,DBI,DBD:: mysql

  • 如果您的问题与特权系统有关,请包括的输出mysqladmin重载,以及在尝试连接时得到的所有错误消息。在测试特权时,应该执行mysqladmin重载版本试着连接给你带来麻烦的程序。

  • 如果你有一个bug的补丁,一定要把它包含进去。但是,如果您没有提供一些必要的信息,例如显示您的补丁修复的错误的测试用例,就不要假定补丁就是我们所需要的一切,或者我们可以使用它。我们可能会在你的补丁中发现问题,或者我们可能根本无法理解它。如果是这样,我们就不能使用它。

    如果我们无法验证补丁的确切用途,我们将不会使用它。测试用例在这里可以帮助我们。显示补丁处理所有可能发生的情况。如果我们发现一个边缘情况(即使是一个罕见的情况),补丁将不起作用,它可能是无用的。

  • 关于错误是什么,为什么会出现,或者它依赖于什么的猜测通常是错误的。即使是MySQL团队,如果不首先使用调试器来确定错误的真正原因,也无法猜测这些事情。

  • 在错误报告中表明您已经检查了参考手册和邮件存档,以便其他人知道您已尝试自己解决问题。

  • 如果数据出现损坏或在访问特定表时出现错误,请首先使用检查表.如果该声明报告了任何错误:

    • InnoDB崩溃恢复机制在服务器被杀死后重新启动时处理清理,因此在典型操作中不需要这样做修复表。如果遇到错误InnoDB表,重新启动服务器,看看问题是否仍然存在,或者错误是否只影响内存中的缓存数据。如果磁盘上的数据已损坏,请考虑使用innodb_force_recovery选项已启用,以便您可以转储受影响的表。

    • 对于非事务性表,尝试用修理表或与myisamchk.看到第五章,MySQL服务器管理

    如果您正在运行Windows,请验证的值lower_case_table_names使用显示类似'lower_case_table_names'的变量声明。此变量影响服务器如何处理数据库和表名的字母大小写。其对给定值的影响应如中所述第9.2.3节“标识符区分大小写”

  • 如果您经常得到损坏的表,您应该设法找出发生这种情况的时间和原因。在这种情况下,MySQL数据目录中的错误日志可能包含一些关于所发生事情的信息。的文件.err后缀的名字。)看到第5.4.2节“错误日志”.请在错误报告中包含此文件中的任何相关信息。正常情况下mysqld应该从来没有如果在更新过程中没有杀死表,则损坏表。如果你能找到原因mysqld如果你死了,我们会更容易为你提供解决问题的方法。看到B.3.1节“如何确定问题的原因”

  • 如果可能,下载并安装MySQL Server的最新版本,并检查它是否解决了您的问题。MySQL软件的所有版本都经过了彻底的测试,应该没有问题。我们相信所有东西都应该尽可能向后兼容,您应该能够毫无困难地切换MySQL版本。看到第2.1.2节“要安装MySQL的版本和发行版”