相关的文档10bet官方网站 下载本手册 从本手册中摘录

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

1.6如何报告错误或问题

在发布关于问题的错误报告之前,请尝试验证它是一个错误,它已尚未报告:

  • 首先搜索MySQL在线手册10bet网址 .我们尝试通过对新发现的问题的解决方案更新,以便更新手册。此外,手册附带的发行说明可能特别有用,因为较新版本是否包含解决问题的解决方案。发行说明在手册中刚刚提供的位置。

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

    如果手册中包含了你正在使用的语法,但是你有一个旧版本的MySQL Server,你应该检查MySQL的更改历史,看看语法是什么时候实现的。在这种情况下,您可以选择升级到更新版本的MySQL服务器。

  • 对于一些常见问题的解决方案,请参阅B.3节,“问题和常见错误”

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

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

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

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

错误数据库中发布的错误http://bugs.10bet靠谱mysql.com/在发行说明中注意到给定版本纠正。

如果您在MySQL Server中找到安全错误,请通过向我们发送电子邮件发送给我们.例外情况:技术支持客户应在以下网站向Oracle技术支持报告所有问题,包括安全漏洞http://support.oracle.com/

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

写一个好的错误报告需要耐心,但是第一次为我们和自己节省时间。一个很好的错误报告,包含错误的错误,使我们很可能会解决下一个版本中的错误。本节可帮助您正确编写报告,以便您不会浪费您的时间做出可能无法帮助我们的事情。请仔细阅读本节,并确保此处描述的所有信息都包含在您的报告中。

优选地,您应该在发布之前使用MySQL Server的最新生产或开​​发版本测试问题。任何人都应该能够通过使用mysql test 或者运行bug报告中包含的shell或Perl脚本。我们能够重复的任何错误都有可能在下一个MySQL版本中被修复。

当错误报告中包含对问题的详细描述时,这是非常有用的。也就是说,给出一个好例子,说明你所做的所有导致问题的事情,并详细描述问题本身。最好的报告包括一个完整的示例,说明如何重现错误或问题。看5.8节,“调试MySQL”

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

错误报告中最常见的错误是(a)不包括你使用的MySQL发行版的版本号,和(b)不完全描述MySQL服务器安装的平台(包括平台类型和版本号)。这些都是高度相关的信息,在99%的情况下,如果没有它们,bug报告就毫无用处。我们经常会被问到,为什么这对我不起作用?然后,我们发现所请求的功能未在该MySQL版本中实现,或者在较新的MySQL版本中修复了报告中描述的错误。错误通常是平台依赖的。在这种情况下,在不知道操作系统和平台的版本号的情况下,我们将不可能解决任何问题。

如果您从源代码编译MySQL,请记住,如果它与问题相关,请记住有关您的编译器的信息。人们经常在编译器中找到错误,并认为问题是MySQL相关的问题。大多数编译器都是在开发的开发中,并通过版本成为更好的版本。要确定您的问题是否取决于您的编译器,我们需要知道您使用的编译器。请注意,每个编译问题都应被视为错误并相应地报告。

如果程序产生错误消息,则在报表中包含消息非常重要。如果我们尝试从档案中搜索某些东西,最好将错误消息更好地报告与程序产生的那些完全匹配。(也应该观察到偶数字母。)最好将整个错误消息复制和粘贴到您的报告中。您永远不应该尝试从内存重现消息。

如果您对连接器/ ODBC(MyoDBC)有问题,请尝试生成跟踪文件并使用您的报告发送。看如何报告连接器/ ODBC问题或错误

如果您的报告包括从测试用例中运行的测试用例的长查询输出行mysql命令行工具,您可以通过使用更新的输出更可读- 垂直的选项或选项\ G语句结束符。这解释选择本节后面的示例将演示\ G

请在您的报告中包含以下信息:

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

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

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

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

  • 内容的文档/ info_bin.来自MySQL安装的文件。此文件包含有关如何配置和编译MySQL的信息。

  • 如果您使用MySQL软件的源分发,请包括您使用的编译器的名称和版本号。如果您有二进制分发,请包括分发名称。

  • 如果问题发生在编译期间,请包含确切的错误消息和错误发生的文件中违规代码的几行上下文。

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

  • 如果数据库表与问题有关,则包括来自的输出显示创建表db_nametbl_name.错误报告中的声明。这是一个非常简单的方法,可以在数据库中获取任何表的定义。这些信息有助于我们创建符合您所经历的情况的情况。

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

    Select routine_schema, routine_name, sql_mode from information_schema.routines;

    对于触发器,您可以使用此语句:

    选择event_object_schema,event_object_table,trigger_name,from Information_schema.trogers;
  • 对于与性能相关的错误或问题选择语句的输出,应始终包含解释选择......,至少行数选择语句产生。还应该包含来自的输出显示创建表tbl_name.对于所涉及的每个表。您提供的信息越多,有可能帮助您的可能性越有可能。

    以下是一个非常好的错误报告的示例。该语句使用了使用的mysql命令行工具。注意使用\ G声明终结符号,否则将提供难以读取的非常长的输出线的陈述。

    mysql >显示变量;mysql> SHOW COLUMNS FROM…\G . >显示列mysql> EXPLAIN SELECT<来自解释的输出>mysql>冲洗状态;mysql>选择......;mysql>显示状态;<来自show status>的输出>
  • 如果在运行时出现错误或问题mysqld,尝试提供再现异常的输入脚本。此脚本应包括任何必要的源文件。脚本越紧密可以重现你的情况,更好。如果您可以进行可重复的测试用例,则应将其上传将其附加到错误报告。

    如果不能提供脚本,则至少应该包含Mysqladmin变量扩展状态进程列表在报告中提供一些关于系统运行情况的信息。

  • 如果您不能仅使用几行生成测试用例,或者如果测试表太大而无法包含在错误报告中(超过10行),则应使用表格转储您的表, mysqldump并创建一个自述描述您的问题的文件。使用。创建文件的压缩存档柏油gzip或者邮政编码.在您为我们的错误数据库启动错误报告后http://bugs.10bet靠谱mysql.com/,单击错误报告中的“文件”选项卡,了解有关将存档上传到错误数据库的指令。

  • 如果您认为MySQL Server从语句产生奇怪的结果,则不仅包括结果,还包括您应该是结果的看法,以及描述您认为依据的解释。

  • 当您提供一个问题示例时,最好使用实际情况中存在的表名、变量名等,而不是使用新名称。问题可能与表或变量的名称有关。也许这种情况很少见,但安全总比后悔好。毕竟,提供一个使用你的实际情况的例子对你来说应该更容易,这对我们来说当然更好。如果您有不希望在bug报告中对其他人可见的数据,您可以使用前面描述的Files选项卡上传它。如果该信息真的是最高机密,您甚至不想向我们展示它,可以继续提供使用其他名称的示例,但请将此视为最后的选择。

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

  • 如果您的问题与特权系统有关,请包括输出mysqladmin重新加载,以及尝试连接时获得的所有错误消息。当您测试您的特权时,您应该执行mysqladmin重新加载版本并尝试与为您提供麻烦的程序连接。

  • 如果你有一个bug补丁,一定要包含它。但是,如果您没有提供一些必要的信息,例如显示补丁修复的bug的测试用例,请不要认为补丁就是我们所需要的全部,或者我们可以使用它。我们可能会发现你的补丁有问题,或者我们可能根本不理解它。如果是这样,我们就不能使用它。

    如果我们无法验证修补程序的确切目的,我们不会使用它。测试用例帮助我们这里。表明修补程序处理可能发生的所有情况。如果我们发现修补程序无法正常工作的边界案例(甚至是罕见的案例,它可能是无用的。

  • 关于bug是什么、为什么会发生或者依赖于什么的猜测通常都是错误的。即使是MySQL团队,如果不先使用调试器来确定bug的真正原因,也不能猜测这样的事情。

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

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

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

    • 对于非交易表,请尝试修复它们修复表或与myisamchk..看第五章,MySQL服务器管理

    如果您正在运行Windows,请验证值lower_case_table_names使用显示变量'lower_case_table_names'声明。这个变量影响服务器如何处理数据库和表名的字母大小写。它对给定值的影响如中所述第9.2.3节“标识符案例灵敏度”

  • 如果您经常损坏表格,您应该尝试找出何时以及为什么会发生这种情况。在这种情况下,MySQL数据目录中的错误日志可能包含有关发生的事情的一些信息。(这是文件。呃后缀在名字里。)看第5.4.2节“错误日志”.请在错误报告中包含此文件中的任何相关信息。正常情况下mysqld应该从来没有如果在更新过程中没有终止表,则破坏表。如果你能找到原因mysqld垂死,我们为您提供解决问题的问题要容易得多。看B.3.1节“如何确定问题的原因”

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