Como relatar erros ou problemas
Nosso banco de dados de bugs é publico e pode ser pesquisado por qualquer um em https://jira.mariadb.org/. 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 MariaDB. 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 MariaDB).
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 MariaDB 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 https://jira.mariadb.org/ serão corrigidos ou documentados na próxma distribuição do MariaDB. 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 é https://jira.mariadb.org.
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 https://jira.mariadb.org. 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 MariaDB.
Para relatar outros problemas, você pode usar a lista de email do MariaDB.
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 MariaDB que estão usando, ou não indicam em qual plataforma elas tem o MariaDB 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 MariaDB, ou que o erro descrito num relatório foi resolvido em uma versão do MariaDB 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 MariaDB. 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 Leia Seçã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. Leia "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 MariaDB
, 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 MariaDB que está em uso (por exemplo, MariaDB 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óriobin
sob sua instalação do MariaDB. - 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 MariaDB, é 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 omysqld
. Normalmente você pode encontrar isto executandomysqld
com o log habilitado. See Seçã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 deEXPLAIN SELECT ...
e ao menos o número de linhas que a instruçãoSELECT
produz. Você também deve incluir a saída deSHOW 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 scriptmysqlbug
):
Exemplo de execução usando a ferramenta de linha de comando
MariaDB
(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 arquivoREADME
que descreve seu problema.
Crie um arquivo comprimido de seus arquivos usando
tar
egzip
ouzip
, e use oftp
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 MariaDB 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 omysqld
eMariaDB
, e para o scriptconfigure
, 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 demysqladmin reload
, e todas as mensagens de erro que você obteve quando tentava conectar! Quando você testar seus privilégios, você deve primeiramente executarmysqlaccess
. Depois, executemysqladmin reload version
e tente conectar com o programa que gerou o problema.mysqlaccess
pode ser encontrado no diretóriobin
sob seu diretório de instalação do MariaDB. - 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 MariaDB 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 MariaDB não suporte a consulta que você está utilizando. Se você estiver usando a versão recente e o manual em https://mariadb.com/kb/ não cobrir a sintaxe que você estiver usando, o MariaDB 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 MariaDB, você deverá conferir o histórico de alterações do MariaDB para ver quando a sintaxe foi implementada. Neste caso, você tem a opção de atualizar para uma nova versão do MariaDB. Leia Apêndice D, Histórico de Alterações do MariaDB.
- 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
ouCHECK TABLE
eREPAIR TABLE
. Leia 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 "O Log de Erros". Por favor forneça qualquer informação relevante deste arquivo no seu relatório de erro! Normalmente omysqld
NUNCA deverá danificar uma tabela se nada o finalizou no meio de uma atualização! Se você puder encontrar a causa do fim domysqld
, se torna muito mais fácil para nós fornecemos a você uma solução para o problema! Leia Seçã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 MariaDB para saber se ela resolve ou não o seu problema. Todas versões do MariaDB 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 MariaDB em minutos! Leia "Qual versão do MariaDB 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 "Como Relatar Problemas com o MyODBC".
Para soluções a alguns problemas comuns, veja Leia 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!