译者:晏子

2.1 MySQL 邮件列表
要订阅主 MySQL 邮件列表,送一条消息到电子邮件地址 mysql-subscribe@lists.mysql.com 。

要退订主 MySQL 邮件列表,送一条消息到电子邮件地址 mysql-unsubscribe@lists.mysql.com 。

只有你发送消息的地址是有意义的,消息的主题行和正文将被忽略。

如果你的回复地址不是有效的,你可以明确地指定地址。把短横加到订阅或退订命令词,随后是你的地址,“@”由一个字符“=”代替。例如,要订阅到john@host.domain,送一条消息到mysql-subscribe-john=host.domain@lists.mysql.com。

邮寄到 mysql-subscribe@lists.mysql.com 或 ezmlm 邮件列表处理器。详细信息可在 ezmlm 网点得到。

要想邮寄一条消息到列表本身,发送你的消息到 mysql@lists.mysql.com。然而,请千万不要将关于订阅或退订的邮件发到mysql@lists.mysql.com ,因为送到该地址的任何邮件被自动地被散发到上千个其他用户。

你本地的网站可能有很多 mysql@lists.mysql.com 的订户,如果这样,也可能有一个本地邮件列表,以便使从 lists.mysql.com 发到你网站的消息被传送到你的本地列表。在这种情况下,请联系你的系统主管加入本地 MySQL 列表和从其中删除。

已有下列 MySQL 邮件列表:

announce
这是MySQL新版本和相关程序的发布通知,这是小信息量的列表,我们认为所有的 MySQL 用户应该订阅。
mysql
为一般 MySQL 讨论的主列表。请注意一些话题最好在更专业的列表上讨论。如果你邮寄到错误的列表上,你可能得不到回答!
mysql digest
文摘形式的mysql列表,这意味着你得到所有单个消息,作为一个大邮件一天发送一次。
java
讨论 MySQL 和 Java ,主要关于 JDBC 驱动程序。
java digest
一个文摘版本java 列表。
win32
有关微软操作系统上例如 Windows NT的 MySQL所有东西。
win32 digest
一个文摘版本win32表。
myodbc
有关用 ODBC联接 MySQL 的所有东西。
myodbc digest
一个文摘版本 myodbc 列表。
msql-mysql-modules
关于 MySQL中对Perl支持的一个列表。
msql-mysql-modules-digest
一个文摘版本 msql-mysql-modules 列表。
developer
为开发 MySQL 原代码的人的一个列表。
developer digest
一个文摘版本developer列表.
你可用上述的方法订阅或退订所有列表。在你的订阅或退订消息中,只是放入不是mysql的适当邮件列表名。例如,订阅或退订myodbc列表,送一条消息到(原文未提供)。


2.2 提问或报告错误
在邮寄一份错误报告或问题前,请按下列步骤做:

由寻找 MySQL 联机的手册开始:

我们通过经常以新发现的问题的解决方法更新手册,努力使它是最新的!

搜索 MySQL 邮件列表档案:

你也可使用 寻找在下的网页(包括手册)。
如果你不能在手册或档案发现答案,检查你本地的 MySQL 专家。如果你仍然不能发现你问题的答案,继续读下一节关于怎样发送邮件到 (原文未提供)。


2.3 怎样报告错误或问题
写一份好的错误报告需要耐心,但是第一次就做得正确可节省你我的时间。本节将帮助你正确撰写你的报告,以使你不浪费时间,也可能做一些根本不能帮助我们的事情。

如果可能的话,我们鼓励每个人使用 mysqlbug 脚本产生一份错误报告(或关于任何问题的一份报告)。mysqlbug可在源代码分发或二进制分发的 MySQL安装目录下的'bin'目录中的'scripts' 目录下找到。如果你不能使用mysqlbug,你仍然应该包括在本节列出的所有必要的信息。

mysqlbug 脚本通过自动确定下列很多信息来帮助你生成一份报告,但是如果一些重要的东西不见了,请在你的消息中包含它!请仔细阅读本节并且保证这里描述的所有信息包含在你的报告中。

要记住,有可能回复一条包含太多的信息消息,但不回复包含极少信息的消息,因为人们认为他们知道一个问题的原因并且假设某些细节无所谓,所以他们常常忽略事实。一个好的原则是:如果你怀疑所说的事情,继续说!在你的报告中写上几行,比因为第一次没有包含足够的信息而被迫追问和等待答案要快上千倍,而且少些麻烦。

最常见的错误是人们不指出他们正在使用的MySQL分发的版本号,或不指出在什么平台上平台安装了 MySQL (包括平台版本号)。这是极其相关的信息,并且没有它99%错误报告是无用的!我们经常得到这样的提问“为什么它不给我工作?”,然后我们发现所需的功能还没有在该版本的 MySQL 中实现,或在一份报告中描述的一个错误已经在更新的MySQL 版本修正了。有时错误是依赖于平台,在这种情况下,不知道平台操作系统和版本号根本不可能修正任何东西。

还要记住,要提供你的编译器信息,如果它与问题有关。人们经常发现错在编译器而认为MySQL的问题。大多数编译器始终都在开发中并且随版本也逐渐变得更好。为了确定决定你的问题是否依赖于你的编译器,我们需要知道使用什么编译器。注意每个编译器得问题应该被认为是一个错误,因此要报告。

在错误报告中包含一个问题的完好描述是最有帮助的。即,你所做的导致这个问题的一个好的例子和确切描述的问题本身。最好的报告是包括显示如何再次产生错误或问题的一个完整例子。

如果一个程序产生一条错误信息,非常重要的是在你的错误报告中要包含它!如果我们试着从使用程序的档案中找一些东西,最好是报告的错误消息精确地匹配程序所产生的。(甚至注意大小写!)你决不应该试图记住错误消息是什么,相反,将全部消息拷贝并且粘贴进你的报告中!

如果你有一个MyODBC问题,你应该尝试产生一个 MyODBC 跟踪文件,详见16.6 报告 MyODBC的问题.

请记住,将要阅读你报告的人有很多使用80列显示。在产生报告或使用mysql命令行工具的例子时,你应该为那些可能超出显示可用宽度的输出(例如,EXPLAIN SELECT语句,见下面的例子)使用--vertical选项(或\G语句终止符)。

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

你正在使用的 MySQL 分发的版本号(例如, MySQL 3.22.22 )。你可以执行mysqladmin version找到你正在运行哪个版本。mysqladmin可以在你的MySQL安装目录的'bin'目录下面找到。
你正在使用的机器的制造商和型号。
操作系统名字和版本。对大多数操作系统,你可以通过执行一条Unix命令uname -a 得到有关信息。
有时存储器的数量(物理和虚拟的)是有意义的,如果有疑问,包含这些值。
如果你正在使用一个MySQL源代码分发 ,则需要使用的编译器的名称和版本号。如果你有一个二进制代码的分发,就需要该分发的名字。
如果问题在编译期间发生,则包含准确的错误消息,并且也包含问题发生的文件中出错代码周围的一些上下文。
如果任何数据库表与问题有关,包含从 mysqldump --db_name tbl_name1 tbl_name2 …的输出结果。这是很容易做到的,并且它是一个获得有关任何数据库表信息的有效方法,将帮助我们创造一个匹配你所遇到问题的环境。
对于与速度或SELECT语句有关的问题,你总是应该包括EXPLAIN SELECT...的输出和至少SELECT语句产生的行数。你给出有关你的情况越多的信息,某些人越能帮助你。例如,下列的例子是一份很好的错误报告(当然它应该用与 mysqlbug 脚本邮寄):运行 mysql 命令行工具的例子(注意对其输出超过80列显示设备的语句使用\G终止符):
mysql> SHOW VARIABLES;
mysql> SHOW COLUMNS FROM ...\G

mysql> EXPLAIN SELECT ...\G

mysql> FLUSH STATUS;
mysql> SELECT ...;
including the time taken to run the query>
mysql> SHOW STATUS;


如果在运行 MySQL 时是发生问题,尝试一下提供一个重现问题的输入脚本,该脚本应该包括任何必要的源文件,重现你情况的脚本越准确越好。如果你不能提供脚本,你至少应该在你的邮件中包括从 mysqladmin variables extended-status processlist的输出以提供你的系统怎样运行!
如果你认为 MySQL 产生一个奇怪的查询结果,不仅要包含结果,而且也要包含应该是什么结果的意见和描述你意见所依据的理由。
当给出问题的一个例子时,最好使用在你的真实情况下的而不是一个新的变量名、表名等等。这个问题应该与一个变量的名、表等有关!也许这些条件是苛刻的,但是安全比担心更好。不管怎么说,提供使用你实际情况的例子应该比较容易,并且各方面来讲它对我们更好一些。如果你有不想把数据显示别人看,你可使用ftp把它上传到ftp://。如果数据确实是高度机密的,甚至不想让我们看到它们,那么继续,并提供使用其它名字的例子,但是请注意这是最后选择。
如果可能,包括相关程序的所有选项,例如,指明你启动 mysqld 守护程序和运行任何 MySQL 客户程序所使用的选项,对象mysqld 和 mysql等程序和configure 的选项常常是答案的关键和至关重要的!包括他们绝对不是一个坏主意!如果你使用任何模块,例如Perl或PHP,请也包括它们的版本号。
如果你不能产生一个行数少的测试,或如果测试表太大,不能寄给邮件列表(超过10行),你应该使用mysqldump倒出(dump)数据库表并且创建“README”文件描述你的问题,用tar和gzip造创建你的文件的一个压缩的档案,并且使用ftp把档案文件转移到ftp://,然后把问题的简短描述发到mysql@lists.mysql.com 。
如果你的问题与权限系统有关。请包括mysqlaccess 、mysqladmin reload的输出和所有尝试连接时得到的错误消息!当你测试你的权限时,你应该首先运行mysqlaccess。在这以后,执行 mysqladmin reload version,最后你应该尝试用你有问题的程序进行连接。 mysqlaccess 可在你的 MySQL 安装目录下的“bin”目录找到。
如果你有一个对错误的补丁程序,那最好,但是千万别假设补丁程序是我们需要的一切,或即使你不提供一些必要信息如补丁能修正的错误的前提条件,就可使用它。我们可能发现你的补丁程序问题,或者我们可能根本不理解它。如果是这样,我们不能使用它。在这里测试条件将帮助我们,这意味着补丁程序将处理一切可能出现的情况。如果我们发现了补丁不能工作的边界条件(即使很怪),它可能毫无用处。
对错误是什么、为什么发生或它依赖什么的猜测通常是错误的。我们甚至不能在没有首先使用一个调试器以确定一个错误的真正原因时做这种猜测。
在你的邮件消息说明你已经检查了参考手册和邮件归档,以便让其他人知道你自己尝试解决你的问题。
如果你得到一个parse error,请仔细检查你的语法!如果你不能它发现有什么不对,极有可能是你当前 MySQL 版本不支持你正在使用的查询。如果你正在使用最新版而且 的参考手册没有涉及你正在使用的语法, MySQL 就不支持你的查询。在这种情况下,你唯一的选择是自己实现语法并邮寄过来。如果手册涉及你正在使用的语法,但是你有一个更旧版本的 MySQL ,你应该检查 MySQL 的更新历史来找出语法何时被实现。见D MySQL 变迁历史。这时你有升级到一个更新 MySQL版本的选择。
如果你有一个这样的问题:当你存取某些特定数据库表时,你的数据好像已破坏或出错,你应该首先用myisamchk检查然后尝试修复你的数据库表。见 13 维护 MySQL 安装.
你经常得到破坏了的数据库表,你应该尝试发现这何时和为何发生!此时“mysql-data-directory/'hostname'.err”文件可能包含所发生事情的一些信息。请在你的错误报告包含这个文件的任何有用信息!如果没有在更新当中杀死了mysqld,通常应该绝对不破坏数据库表!如果你能找出mysqld为什么死掉的原因,对于我们,更容易向你提供对问题的修正!
如果可能,下载最新版本的 MySQL ,并且检查它是否解决你的问题。MySQL的所有版本都被彻底地测试并且应该毫无问题地运行!我们相信使一切尽可能向后兼容,并且你应该能在数分钟内切换 MySQL 版本!见 4.3 要使用 MySQL 哪个版本。
如果你是一个支持客户,请直接邮寄错误报告到适当的邮件列表,看看是否有其他人有这个问题的经验(或许已经解决)。

对于报导MyODBC错误的信息,见 16.2 怎样报告 MyODBC 问题。

一些常见问题的答案,见 18 问题和常见的错误。

当答案个别发给你而不是邮件列表时,总结答案并且将总结发到邮件列表以便其它人可以从你收到的帮助你解决问题的答案中受益,这被认为是一个很好的规矩。


2.4 在邮件列表上回答问题的指南
如果你认为你的答案引起广泛的兴趣,你可能想要把它寄到邮件列表中而不是直接答复提问的人。试着让你的答案足够普遍,让不是邮寄者的其他人可从它获益。当你邮寄到邮件列表时,请保证你的回答不和以前的答案重复。

尝试总结在你的答复中的问题的主要部分,别感觉不好意思引用全部原文消息。

请不要从有 HTML 模式的浏览器投寄邮件消息!许多用户不用浏览器读邮件!