El sitio normal en el que reportar bugs es http://bugs.mysql.com/, que es la dirección de nuestra base de datos de bugs. Esta base de datos es pública, y puede ser consultada por cualquiera. Si entra en el sistema, puede añadir nuevos reportes.
Para escribir un buen reporte de error se necesita paciencia, pero hacerlo correctamente por primera vez nos ahorra tiempo tanto a nosotros como a usted mismo. Un buen reporte de bug que contenga un testeo completo del bug, hace que sea muy probable que se arregle para la siguiente versión. Esta sección muestra cómo escribir un reporte correctamente de forma que no pierda su tiempo haciendo cosas que no nos ayudan en absoluto.
Animamos a todo el mundo a usar el script
mysqlbug para generar un reporte de bug (o
un reporte acerca de cualquier problema).
mysqlbug puede encontrarse en el directorio
scripts
(distribución fuente) y en el
directorio bin
en el directorio de
instalación (distribución binaria). Si no es posible usar
mysqlbug (por ejemplo, si utiliza Windows),
es vital que incluya toda la información necesaria que
aparece en esta sección (y lo más importante, una
descripción del sistema operativo y la versión de MySQL).
El script mysqlbug le ayuda a generar un reporte determinando la mayoría de la información automáticamente, pero si falta algo importante, por favor inclúyalo en su mensaje. Por favor, lea esta sección con cuidado y asegúrese que toda la información descrita aquí se incluye en su reporte.
Preferiblemente, debe testear el problema usando la última
versión de producción o desarrollo de MySQL server antes de
postear. Cualquiera debería ser capaz de repetir el bug
usando mysql test< script_file
en el
caso de test incluído o ejecutando el script de consola o
Perl incluído en el reporte de bug.
Todos los bugs posteados en la base de datos de bugs en http://bugs.mysql.com/ se corrigen o documentan en la siguiente actualización de MySQL. Si sólo se necesitan cambios menores en el código para arreglarlo, podemos postear un parche para arreglarlo.
Si encuentra un fallo importante de seguridad en MySQL, puede
enviar un correo a <security@mysql.com>
.
Si tiene un reporte de bug repetible, por favor envíelo a la base de datos de bugs en http://bugs.mysql.com/. Tenga en cuenta que incluso en este caso es bueno ejecutar el script mysqlbug antes para reunir información de su sistema. Cualquier bug que seamos capaces de reproducir tiene una alta probabilidad de arreglarse en la siguiente versión de MySQL.
Para reportar otros problemas, puede usar cualquiera de las listas de correo de MySQL.
Recuerde que nos es posible responder un mensaje que contenga demasiada información, pero no si no contiene suficiente. Normalmente se omiten los hechos porque se piensa que se conoce la causa del problema y se asume que algunos detalles no importan. Un buen principio es el siguiente: si duda acerca de explicar algo, hágalo. Es más rápido y menos problemático escribir un par de líneas extra en su reporte que esperar a la respuesta si debemos preguntar algo que no se incluya en el reporte inicial.
Los errores más comunes en los reportes de error son (a) no incluir el número de versión de la distribución MySQL Server usada, y (b) no escribir completamente la plataforma en la está instalado MySQL Server (incluyendo el tipo de plataforma y número de versión). Esta es información altamente relevante, y en el 99% de los casos el reporte de bug es inútil sin ella. Muy a menudo nos preguntas "¿Porqué no me funciona a mí?" Entonces encontramos que la característica reportada no estaba implementada en esa versión de MySQL. A veces el error depende de la plataforma; en esos casos es casi imposible para nosotros arreglar nada sin saber el sistema operativo y el número de versión de la plataforma.
Si ha compilado MySQL del código fuente, recuerde en proporcionar información acerca del compilador, si está relacionada con el problema. A menudo la gente encuentra fallos en los compiladores y cree que el problema está relacionado con MySQL. La mayoría de los compiladores están bajo desarrollo contínuo y mejoran versión a versión, necesitamos saber qué compilador usa. Tenga en cuenta que cada cada problema de compilación debe ser considerado como un bug y reportado como tal.
Es más útil cuando se incluye una buena descripción del problema junto al reporte del bug. Esto es dar un buen ejemplo de todo lo que conduce al problema y describir exactamente el problema en sí. El mejor reporte es el que incluye un ejemplo incluyendo cómo reproducir el problema o bug. Consulte Sección D.1.6, “Crear un caso de prueba tras haber encontrado una tabla corrupta”.
Si un programa produce un mensaje de error es muy importante incluirlo en el reporte. Si tratamos de buscar algo de los archivos usando programas, es mejor que el mensaje de error coincida exactamente con el producido por el programa (incluso es importante respetar mayúsculas y minúsculas). Nunca debe intentar reproducir de memoria el mensaje de error; en lugar de ello, copie el mensaje entero en el reporte.
Si tiene algún problema con el Connector/ODBC (MyODBC), por favor trate de generar un fichero de traza y enviarlo con su reporte. Consulte Sección 25.1.7.2, “How to Report Connector/ODBC Problems or Bugs”.
Por favor, recuerde que mucha gente que lea su reporte lo
hará con un monitor de 80 columnas. Cuando genere reportes o
ejemplos usando la columna de línea de comandos
mysql debe usar la opción
--vertical
(o el terminador de comando
\G
) para salida que excedería el ancho
disponible para tales monitores ( por ejemplo, con el comando
EXPLAIN SELECT
; ( vea el ejemplo al final
de esta sección).
Por favor, incluya la siguiente información en su reporte:
El número de la versión de la distribución de MySQL que
usa (por ejemplo, MySQL 4.0.12). Puede consultar la
versión que está usando ejecuntado mysqladmin
version. El programa
mysqladmin puede encontrarse en el
directorio bin
bajo el directorio de
instalación.
El fabricante y modelo de la máquina en la que experimenta el problema.
Nombre del sistema operativo y versión. Si trabaja con
Windows, puede obtener el nombre y número de versión
haciendo doble click en el icono Mi PC y consultando el
menú "Ayuda/Acerca de Windows". Para la mayoría de
sistemas Unix puede obtener esta información con el
comando uname -a
.
En ocasiones la cantidad de memoria (real y virtual) es relevante. Si lo duda, incluya estos valores.
Si usa una distribución fuente del software MySQL, el nombre y número de versión del compilador usado es necesario.Si usa una distribución binaria, necesita el nombre de la distribución.
Si el problema ocurre durante la compilación, incluya el mensaje de error exacto y unas cuantas líneas de contexto alrededor del código en el fichero donde ocurre el error.
Si mysqld cae, incluya la consulta que hizo caer mysqld. Normalmente puede consultarlo ejecutando mysqld con el log de consultas activado, y luego consultando el log tras la caída de mysqld. Consulte Sección D.1.5, “El uso de registros (logs) para encontrar la causa de errores de mysqld”.
Si una base de datos está relacionada con el problema,
incluya la salida del comando mysqldump --no-data
db_name
tbl_name
. Este es un
método sencillo y poderoso para obtener información
acerca de cualquier tabla en una base de datos. La
información nos ayuda a crear una situación similar a la
que ha provocado el fallo.
Para bugs relacionados con rendimiento o problemas con
consultas SELECT
, siempre debe incluir
la salida de EXPLAIN SELECT ...
, y como
mínimo el número de filas que el comando
SELECT
produce. También puede incluir
la salida de SHOW CREATE TABLE
para cada
tabla implicada. Mientras más información tengamos
acerca de la situación, es más posible que podamos
ayudar..
tbl_name
El siguiente es un ejemplo de un reporte muy bueno. Debe
ser posteado con el script mysqlbug. El
ejemplo usa la herramienta por líneas de comando
mysql. Tenga en cuenta el terminador de
comandos \G
para comandos cuya salida
exceda las de un monitor de 80 columnas.
mysql> SHOW VARIABLES; mysql> SHOW COLUMNS FROM ...\G <salida de SHOW COLUMNS> mysql> EXPLAIN SELECT ...\G <salida de EXPLAIN> mysql> FLUSH STATUS; mysql> SELECT ...; <Una pequeña descripción de la salida del SELECT, incluyendo el tiempo empleado en ejecutar la consulta> mysql> SHOW STATUS; <salida de SHOW STATUS>
Si ocurre un problema al ejecutar mysqld, trate de proporcionar un script de entrada que reproduzca la anomalía. Este script debe incluir cualquier fichero fuente necesario. Mientras más fielmente reproduzca el script la situación, mejor. Si puede hacer un caso de test reproducible, debe postearlo en http://bugs.mysql.com/ para un tratamiento prioritario.
Si no puede proporcionar un script, debe como mínimo incluir la salida de mysqladmin variables extended-status processlist en su correo para proporcionar algo de información sobre cómo se está comportando el sistema.
Si no puede proporcionar un caso de test con unas pocas
líneas, o si la tabla de test es demasiado grande para
ser enviada a la lista de correo (más de 10 filas), debe
dumpear sus tablas usando mysqldump y
crear un ficero README
que describa
su problema.
Cree un fichero comprimido con sus ficheros usando tar y gzip o zip, y use FTP para transferir el archivo a ftp://ftp.mysql.com/pub/mysql/upload/. Después introduzca el problema en nuestra base de datos en http://bugs.mysql.com/.
Si cree que el servidor MySQL produce un resultado extraño de una consulta, incluya no sólo el resultado, sino también su opinión sobre cuál debería ser el resultado correcto, y una citación describiendo las bases de su opinión.
Cuando de un ejemplo del problema, es mejor usar los nombres de variables, de tablas, etc. que existan en la situación en lugar de usar nuevos nombres. El problema puede estar relacionado con el nombre de una variable o tabla. Estos casos son raros, pero es mejor estar seguro que arrepentirse luego. Después de todo, debería ser más fácil dar un ejemplo que use la situación real y esto es mejor para nosotros. En caso que tenga datos que no quiera enseñar, puede usar FTP para transferirlo a ftp://ftp.mysql.com/pub/mysql/upload/. Si la información es realmente secreta y no quiere enseñárnosla, entonces puede proporcionarnos un ejemplo usando otros nombres, pero por favor, considérelo como la última opción.
Incluya todas las opciones introducidas en los programas relevantes, si es posible. Por ejemplo, indique las opiones que usa cuando inicia el servidor mysqld así como las opciones que usa cuando ejecuta cualquier programa cliente MySQL. Las opciones de dichos programas, tales como mysqld y mysql, y al script configure , son a menudo claves para obtener una respuesta y muy relevantes. Nunca es mala idea incluirlas. Si usa cualquier módulo, como Perl o PHP, por favor incluya los número de versiones de los mismos también.
Si su pregunta está relacionada con el sistema de
privilegios, por favor incluya la salida de
mysqlaccess, la salida de
mysqladmin reload, y todos los mensajes
de error que obtenga cuando intente conectar. Cuando
testee sus privilegios, debe ejecutar el comando
mysqlaccess. Después, ejecute
mysqladmin reload version y trate de
conectar con el comando que le causa problemas.
mysqlaccess se encuentra en el
directorio bin
bajo el directorio de
instalación de MySQL.
Si tiene un parche para un bug, inclúyalo. Pero no asuma que el parche es todo lo que necesitamos o que podemos usarlo, sin proporcionar alguna información necesaria como casos de test mostrando el problema que corrige el parche. Podemos encontrar problemas en su parche o puede que no lo entendamos en absoluto; en ese caso no podemos usarlo.
Si no podemos verificar exactamente el propósito del parche, no lo usaremos. Los casos de test nos ayudan en este punto. Nos muestran que el parche puede tratar todas las situaciones que puedan ocurrir. Si encontramos un caso extremo (incluso uno raro) donde el parche no funcione, será inútil.
Suposiciones acerca de la naturaleza del bug, porqué ocurre o de qué depende, suelen ser incorrectas. Incluso el equipo de MySQL no puede adivinar estas cosas sin usar un debugger para determinar la causa real de un bug.
Indique en su reporte que ha chequeado el manual de referencia y el archivo de correo, de forma que otros sepan que ha intentado solucionar el problema por sí mismo.
Si obtiene un parse error
, por favor
chequee su sintaxis con cuidado. Si no puede encontrar
nada incorrecto en ella, es muy posible que su versión de
MySQL Server no soporte la sintaxis que utiliza. Si está
usando la versión actual y el manual en
http://dev.mysql.com/doc/
no cubre la versión que usa, MySQL Server no soporta su
consulta. En ese caso, sus únicas opciones son
implementar la sintaxis usted mismo o enviar un mail a
<licensing@mysql.com>
y pedir una oferta para
implementarlo.
Si el manual cubre la sintaxis que está usando, pero tiene una versión más antigua de MySQL, compruebe el historial de cambios de MySQL para ver si la sintaxis ha sido implementada. En ese caso, tiene la opción de actualizar a una nueva versión de MySQL Server. Consulte Apéndice C, Historial de cambios de MySQL.
Si su problema es que los datos parecen estar corruptos u
obtiene errores al acceder a una tabla en particular, debe
chequear y tratar de arreglar las tablas con
CHECK TABLE
y REPAIR
TABLE
o con myisamchk.
Consulte Capítulo 5, Administración de bases de datos.
Si está utilizando Windows, verifique que
lower_case_table_names
es 1 o 2 con
SHOW VARIABLES LIKE
'lower_case_table_names'
.
Si tiene problemas con tablas corruptas a menudo, debe
tratar de encontrar cuándo y porqué ocurre. En este
caso, el log de errores en el directorio de datos de MySQL
puede contener información acerca de qué ha ocurrido.
(Éste es el fichero con el sufijo
.err
en el nombre.) Consulte
Sección 5.10.1, “El registro de errroes (Error Log)”. Por favor, incluya cualquier
información relevante de este fichero en su reporte.
Normalmente mysqld
nunca debería corromper una tabla si
nada muere durante una actualización. Si puede encontrar
la causa de un mysqld muriendo, es
mucho más fácil para nosotros encontrar una solución al
problema. Consulte Sección A.1, “Cómo determinar a qué es debido un problema”.
Si es posible, descargue e instale la versión más reciente de MySQL Server y compruebe si resuelve su problema. Todas las versiones del software MySQL son testeadas duramente y deberían funcionar sin problemas. Creemos en hacer todo tan compatible con versiones anteriores como sea posible, y debería cambiar entre versiones de MySQL sin dificultades. Consulte Sección 2.1.2, “Escoger la distribución MySQL a instalar”.
Si es un cliente con soporte, por favor envíe el reporte de
error a <mysql-support@mysql.com>
para
tratamiento de alta prioridad, así como a la lista de correo
apropiada para ver si alguien más ha experimentado ( y
quizás resuelto ) el problema.
Para información acerca de reportar errores en MyODBC, consulte Sección 25.1.7.2, “How to Report Connector/ODBC Problems or Bugs”.
Para soluciones de problemas más comunes, consulte Apéndice A, Problemas y errores comunes.
Cuando se envían soluciones a usted individualmente y no a la lista de correo, se considera una buena práctica resumir las respuestas y enviar el resumen a la lista de correo, de forma que otros puedan beneficiarse de las respuestas que ha recibido y que le han ayudado a resolver su problema.
Ésta es una traducción del manual de referencia de MySQL, que puede encontrarse en dev.mysql.com. El manual de referencia original de MySQL está escrito en inglés, y esta traducción no necesariamente está tan actualizada como la versión original. Para cualquier sugerencia sobre la traducción y para señalar errores de cualquier tipo, no dude en dirigirse a mysql-es@vespito.com.