:: DEVELOPER ZONE
Nosso banco de dados de bugs é publico e pode ser pesquisado por qualquer um em http://bugs.mysql.com/. Se você logar no sistema, você poderá entrar novos relatórios.
Escrever um bom relatório de erro exige paciência, e fazê-lo de forma apropriada economiza tempo para nós e para você. Um bom relatório de erros contendo um teste de caso para o bug irá torná-lo muito mais fácil para corrigí-lo no próximo release. Esta seção irá ajudá-lo a escrever seu relatório corretamente para que você não perca seu tempo fazendo coisas que não irão ajudar-nos muito ou nada.
Nós encorajamos todo mundo a usar o script mysqlbug para gerar um relato de
erros (ou um relato sobre qualquer problema), se possível. mysqlbug pode
ser encontrado no diretório scripts na distribuição fonte, ou, para uma
distribuição binária, no diretório bin no diretório de instalação
do MySQL. Se você não puder utilizar o mysqlbug (por exemplo, se você
o estiver executando no Windows), é ainda de vital importância que você
incluia todas as informações necessárias listadas nesta seção (o mais importante
é uma descrição do sistema operacional e a versão do MySQL).
O script mysqlbug lhe ajudará a gerar um relatório determinando muitas das
seguintes informações automaticamente, mas se alguma coisa importante estiver
faltando, por favor forneça-o junto de sua mensagem! Por favor leita esta seção
com cuidado e tenha certeza que todas as informações descritas aquie estão
incluídas no seu relatório.
De preferência, você deve testar o problema usando a última versão de produção
ou desenvolvimento do Servidro MySQL antes do envio. Qualquer um deve estar apto
a repetir o erro apenas usando 'mysql test < script' no caso de teste
incluido ou executando o script sheel ou Perl que é incluído no relatório de
erros.
Todos os erros enviados para o banco de dados dem bugs em http://bugs.mysql.com/ serão corrigidos ou documentados na próxma distribuição do MySQL. Se apenas pequenas mudanças de código forem necessárias enviaremos um patch para corrigir o problema.
O lugar comum para relatar erros e problemas é http://bugs.mysql.com.
Se você encontrar um erro de segurança no MySQL, envie um email para
<security@mysql.com>.
Se você tiver um relatório de erro que possa ser repetido, relate-o no
banco de dados de bugs em http://bugs.mysql.com. Note que mesmo
neste caso é bom executar o script mysqlbug primeiro para ter
informações sobre o sistema. Qualquer erro que pudermos repetir tem uma
grande chance de ser corrigido na próxima distribuição do MySQL.
Para relatar outros problemas, você pode usar a lista de email do MySQL.
Lembre-se que é possível responder a uma mensagem contendo muita informação, mas não a uma contendo muito pouca. Frequentemente pessoas omitem fatos porque acreditam que conhecem a causa do problema e assumem que alguns detalhes não importam. Um bom principio é: Se você está em dúvida sobre declarar alguma coisa, declare-a ! É milhares de vezes mais rápido e menos problemático escrever um pouco de linhas a mais no seu relatório do que ser forçado a perguntar de novo e esperar pela resposta porque você não forneceu informação sufiente da primeira vez.
Os erros mais comuns acontecem porque as pessoas não indicam o número da versão da distribuição do MySQL que estão usando, ou não indicam em qual plataforma elas tem o MySQL instalado (Incluindo o número da versão da plataforma). Essa informação é muito relevante, e em 99% dos casos o relato de erro é inútil sem ela! Frequentemente nós recebemos questões como, ``Por que isto não funciona para mim?'' então nós vemos que aquele recurso requisitado não estava implementado naquela versão do MySQL, ou que o erro descrito num relatório foi resolvido em uma versão do MySQL mais nova. Algumas vezes o erro é dependente da plataforma; nesses casos, é quase impossível corrigir alguma coisa sem conhecimento do sistema operacional e o número da versão da plataforma.
Lembre-se também de fornecer informações sobre seu compilador, se isto for relacionado ao problema. Frequentemente pessoas encontram erros em compiladores e acreditam que o problema é relacionado ao MySQL. A maioria dos compiladores estão sobre desenvolvimento todo o tempo e tornam-se melhores a cada versão. Para determinar se o seu problema depende ou não do compilador, nós precisamos saber qual compilador foi usado. Note que todo problema de compilação deve ser estimado como relato de erros e, consequentemente publicado.
É de grande ajuda quando uma boa descrição do problema é incluída no relato do erro. Isto é, um bom exemplo de todas as coisas que o levou ao problema e a correta descrição do problema. Os melhores relatórios são aqueles que incluem um exemplo completo mostrando como reproduzir o erro ou o problema See Secção E.1.6, “Fazendo um Caso de Teste Se Ocorre um Corrompimento de Tabela”.
Se um programa produz uma mensagem de erro, é muito importante incluir essas mensagens no seu relatório! Se nós tentarmos procurar por algo dos arquivos usando programas, é melhor que as mensagens de erro relatadas sejam exatamente iguais a que o programa produziu. (Até o caso deve ser observado!) Você nunca deve tentar lembrar qual foi a mensagem de erro; e sim, copiar e colar a mensagem inteira no seu relatório!
Se você tem um problema com o MyODBC, você deve tentar gerar um arquivo para rastremento de erros (trace) do MyODBC. See Secção 12.2.7, “Relatando Problemas com MyODBC”.
Por favor lembre-se que muitas das pessoas que lerão seu relatório podem usar
um vídeo de 80 colunas. Quando estiver gerando relatórios ou exemplos usando
a ferramenta de linha de comando mysql, então deverá usar a opção
--vertical (ou a instrução terminadora \G) para saída que irá
exceder a largura disponível para este tipo de vídeo (por exemplo, com a
instrução EXPLAIN SELECT; veja exemplo abaixo).
Por favor inclua a seguinte informação no seu relatório:
O número da versão da distribuição do MySQL que está em uso (por exemplo,
MySQL Version 3.22.22). Você poderá saber qual versão vocês está executando,
usando o comando mysqladmin version. mysqladmin pode ser
encontrado no diretório bin sob sua instalação do MySQL.
O fabricante e o modelo da máquina na qual você está trabalhando.
O nome do sistema operacional e a versão. Para a maioria dos sistemas
operacionais, você pode obter esta informação executando o comando Unix
uname -a. Se você trabalho no Windows, você pode normalmente
conseguir o nome e o número da versão com um duplo clique sobre o ícone
''Meu Computador'' e em seguida no menu ''Ajuda/Sobre o Windows''.
Algumas vezes a quantidade de memória (real e virtual) é relevante. Se estiver em dúvida, inclua esses valores.
Se você estiver usando uma distribuição fonte do MySQL, é necessário o nome e número da versão do compilador usado. Se você estiver usando uma distribuição binária, é necessário o nome da distribuição.
Se o problema ocorre durante a compilação, inclua a(s) exata(s) mensagem(s) de erro(s) e também algumas linhas do contexto envolvendo o código no arquivo onde o erro ocorreu.
Se o mysqld finalizou, você deverá relatar também a consulta que travou
o mysqld. Normalmente você pode encontrar isto executando mysqld
com o log habilitado. See Secção E.1.5, “Usando Arquivos de Log para Encontrar a Causa dos Erros no mysqld”.
Se alguma tabela do banco de dados estiver relacionado ao problema, inclua a
saída de mysqldump --nodata nome_db nome_tbl1 nome_tbl2.... Isto é muito
fácil de fazer e é um modo poderoso de obter informações sobre qualquer
tabela em um banco de dados que irá ajudar-nos a criar uma situação parecida
da que você tem.
Para problemas relacionados à velocidade ou problemas com instruções
SELECT, você sempre deve incluir a saída de EXPLAIN SELECT ...
e ao menos o número de linhas que a instrução SELECT produz. Você também
deve incluir a saída de SHOW CREATE TABLE nome_tabela para cada tabela
envolvida. Quanto mais informação você fornecer sobre a sua situação, mais fácil
será para alguém ajudar-lo! A seguir um exemplo de um relatório de erros muito bom
(ele deve ser postado com o script mysqlbug):
Exemplo de execução usando a ferramenta de linha de comando mysql
(perceba o uso do instrução terminadora \G para instruções cuja largura
de saída deva ultrapassar 80 colunas):
mysql> SHOW VARIABLES;
mysql> SHOW COLUMNS FROM ...\G
<saida para SHOW COLUMNS>
mysql> EXPLAIN SELECT ...\G
<saida para EXPLAIN>
mysql> FLUSH STATUS;
mysql> SELECT ...;
<Uma pequena versão da saída do SELECT,
incluindo a hora em que a consulta foi executada>
mysql> SHOW STATUS;
<saida do SHOW STATUS>
Se um erro ou problema ocorrer quando estiver executando o mysqld,
tente fornecer um script de entrada que irá reproduzir a anomalia. Este
script deve incluir qualquer arquivo de fonte necessário. Quanto mais próximo
o script puder reproduzir sua situação, melhor. Se você puder fazer uma
série de testes repetidos, você poderá postá-lo para o
<bugs@lists.mysql.com> para um tratamento de alta prioridade!
Se não puder fornecer o script, você ao menos deve incluir a saída de
mysqladmin variables extended-status processlist na sua mensagem
para fornecer alguma informação da performance do seus sistema.
Se você não puder produzir um caso de teste em algumas linhas, ou se a tabela
de testes for muito grande para ser enviada por email para a lista de
mensagens (mais de 10 linhas), você deverá dar um dump de suas tabelas usando
o mysqldump e criar um arquivo README que descreve seu problema.
Crie um arquivo comprimido de seus arquivos usando tar e gzip ou
zip, e use o ftp para transferir o arquivo para
ftp://support.mysql.com/pub/mysql/secret/. E envie uma pequena descrição
do problema para <bugs@lists.mysql.com>.
Se você achar que o MySQL produziu um resultado estranho para uma consulta, não inclua somente o resultado, mas também sua opinião de como o resultado deve ser, e uma conta descrevendo o base de sua opinião.
Quando fornecer um exemplo do problema, é melhor usar os nomes de variáveis,
nomes de tabelas, etc. utilizados na sua situação atual do que enviar com
novos nomes. O problema pode ser relacionado ao nome da variável ou tabela!
Esses casos são raros, mas é melhor prevenir do que remediar.
Além disso, será mais fácil para você fornecer um exemplo que use sua
situação atual, que é o que mais importa para nós. No caso de ter
dados que não deseja mostrar para outros, você pode usar o ftp para
transferi-lo para ftp://support.mysql.com/pub/mysql/secret/. Se os dados
são realmente confidenciais, e você não deseja mostrá-los nem mesmo para nós,
então vá em frente e providencie um exemplo usando outros nome, mas, por favor
considere isso como uma única chance.
Inclua, se possível, todas as opções fornecidas aos programas relevantes. Por
exemplo, indique as opções que você utiliza quando inicializa o daemon
mysqld e aquelas que são utilizadas para executar qualquer programa
cliente MySQL. As opções para programas como o mysqld e mysql,
e para o script configure, são frequentemente chaves para respostas e
são muito relevantes! Nunca é uma má idéia incluí-las de qualquer forma! Se
você usa algum módulo, como Perl ou PHP por favor forneça o número da versão
deles também.
Se sua questão é relacionada ao sistema de privilégios, por favor forneça a
saída de mysqlaccess, a saída de mysqladmin reload, e todas as
mensagens de erro que você obteve quando tentava conectar! Quando você testar
seus privilégios, você deve primeiramente executar mysqlaccess. Depois,
execute mysqladmin reload version e tente conectar com o programa que
gerou o problema. mysqlaccess pode ser encontrado no diretório bin
sob seu diretório de instalação do MySQL.
Se você tiver um patch para um erro, isso é bom, mas não assuma que o patch é tudo que precisamos, ou que iremos usá-lo, se você não fornecer algumas informações necessárias, como os casos de testes mostrando o erro que seu patch corrige. Nós podemos encontrar problemas com seu patch ou nós podemos não entendê-lo ao todo; se for assim, não podemos usá-lo.
Se nós não verificarmos exatamente o que o patch quer dizer, nós não poderemos usá-lo. Casos de testes irão ajudar-nos aqui. Mostre que o patch irá cuidar de todas as situações que possam ocorrer. Se nós encontrarmos um caso (mesmo que raro) onde o patch não funcionaria, ele pode ser inútil.
Palpites sobre qual é o erro, porque ocorre, ou do que ele depende, geralmente estão errados. Mesmo o time MySQL não pode adivinhar antecipadamente tais coisas sem usar um debugger para determinar a causa real do erro.
Indique na sua mensagem de e-mail que você conferiu o manual de referência e o arquivo de mensagens para que outros saibam que você tentou solucionar o problema.
Se você obter um parse error, por favor confira sua sintaxe com atenção!
Se você não conseguiu encontrar nada errado com ela, é extremamente provável
que que sua versão corrente do MySQL não suporte a consulta que você está
utilizando. Se você estiver usando a versão recente e o manual em
http://www.mysql.com/documentation/manual.php não cobrir a sintaxe que
você estiver usando, o MySQL não suporta sua consulta. Neste caso, suas unicas
opções são implementar você mesmo a sintaxe ou enviar uma mensagem para
<mysql-licensing@mysql.com> e perguntar por uma oferta para implementá-lo!
Se o manual cobrir a sintaxe que você estiver usando, mas você tiver uma versão mais antiga do MySQL, você deverá conferir o histórico de alterações do MySQL para ver quando a sintaxe foi implementada. Neste caso, você tem a opção de atualizar para uma nova versão do MySQL. See Apêndice D, Histórico de Alterações do MySQL.
Se você tiver um problema do tipo que seus dados aparecem corrompidos ou você
obtem erros quando você acessa alguma tabela em particular, você deverá primeiro
checar depois tentar reparar suas tabelas com myisamchk ou
CHECK TABLE e REPAIR TABLE. See Capítulo 4, Administração do Bancos de Dados MySQL.
Se você frequentemente obtém tabelas corrompidas, você deve tentar encontrar
quando e porque isto acontece! Neste caso, o arquivo
mysql-data-directory/'hostname'.err deve conter algumas informações
sobre o que aconteceu. See Secção 4.10.1, “O Log de Erros”. Por favor forneça qualquer informação
relevante deste arquivo no seu relatório de erro! Normalmente o mysqld
NUNCA deverá danificar uma tabela se nada o finalizou no meio
de uma atualização! Se você puder encontrar a causa do fim do mysqld, se
torna muito mais fácil para nós fornecemos a você uma solução para o problema!
See Secção A.1, “Como Determinar o Que Está Causando Problemas”.
Se possível, faça o download e instale a versão mais recente do MySQL para saber se ela resolve ou não o seu problema. Todas versões do MySQL são muito bem testadas e devem funcionar sem problemas! Acreditamos em deixar tudo, o mais compátivel possível com as versões anteriores, e você conseguirá mudar de versões MySQL em minutos! See Secção 2.2.4, “Qual versão do MySQL deve ser usada”.
Se você é um cliente de nosso suporte, por favor envio o seu relatório de erros
em <mysql-support@mysql.com> para tratamento de alta prioritário, bem como
para a lista de mensagens apropriada para ver se mais alguém teve experiências com
(e talvez resolveu) o problema.
Para informações sobre relatar erros no MyODBC, veja Secção 12.2.4, “Como Relatar Problemas com o MyODBC”.
Para soluções a alguns problemas comuns, veja See Apêndice A, Problemas e Erros Comuns.
Quando respostas são enviadas para você individualmente e não para a lista de mensagens, é considerado boa etiqueta resumir as respostas e enviar o resumo para a lista de mensagens para que outras possam ter o benefício das respostas que você recebeu que ajudaram a resolver seu problema!
© 1995-2005 MySQL AB. All rights reserved.
