errores de mysql

18
Esta sección enumera algunos errores que los usuarios encuentran de manera frecuente cuando ejecutan programas MySQL. Aunque los problemas se muestran cuando intenta ejecutar programas cliente, las soluciones a muchos de los problems pasan por cambios en la configuración del servidor MySQL. A.2.1. Access denied Un error de Acceso denegado puede tener muchas causas. Frecuentemente el problema está relacionado con las cuentas MySQL a las que el servidor deja que se conecten los programas cliente. Consulte Sección 5.6.8, “Causas de errores Access denied . Consulte Sección 5.6.2, “Cómo funciona el sistema de privilegios” . A.2.2. Can't connect to [local] MySQL server Un cliente MySQL en Unix puede conectarse al servidor mysqld de dos maneras diferentes: Utilizando un archivo socket de Unix para conectarse a través de un archivo en el sistema de ficheros (por defecto /tmp/mysql.sock), o utilizando TCP/IP, que se conecta a través de un número de puerto. Una conexión a través de archivo socket de Unix es más rápida que a través de TCP/IP, pero solo puede ser utilizada cuando se conecta a un servidor en la misma máquina. Se utiliza un archivo de socket Unix siempre que no se especifique un nombre de servidor o si se especifica el nombre de servidor especial localhost. Si el servidor MySQL está ejecutándose en Windows 9x o Me, puede conectarse únicamente a través de TCP/IP. Si el servidor se está ejecutando sobre Windows NT, 2000, XP, o 2003 y ha sido iniciado con la opción --enable-named-pipe, puede también conectarse a través de named pipes si el cliente se está ejecutando en la misma máquina que el servidor. El nombre de la named pipe es por defecto MySQL. Si no se especifica un nombre de servidor al conectar a mysqld, un cliente MySQL intenta primero conectarse a la named pipe. Si esto no funciona, se conecta al puerto TCP/IP. Usted puede

Upload: izrael-cervera

Post on 18-Nov-2015

10 views

Category:

Documents


0 download

DESCRIPTION

tipos de errores que puede tener MYSQL

TRANSCRIPT

Esta seccin enumera algunos errores que los usuarios encuentran de manera frecuente cuando ejecutan programas MySQL. Aunque los problemas se muestran cuando intenta ejecutar programas cliente, las soluciones a muchos de los problems pasan por cambios en la configuracin del servidor MySQL.A.2.1.Access deniedUn error deAcceso denegadopuede tener muchas causas. Frecuentemente el problema est relacionado con las cuentas MySQL a las que el servidor deja que se conecten los programas cliente. ConsulteSeccin5.6.8, Causas de erroresAccess denied. ConsulteSeccin5.6.2, Cmo funciona el sistema de privilegios.A.2.2.Can't connect to [local] MySQL serverUn cliente MySQL en Unix puede conectarse al servidormysqldde dos maneras diferentes: Utilizando un archivo socket de Unix para conectarse a travs de un archivo en el sistema de ficheros (por defecto/tmp/mysql.sock), o utilizando TCP/IP, que se conecta a travs de un nmero de puerto. Una conexin a travs de archivo socket de Unix es ms rpida que a travs de TCP/IP, pero solo puede ser utilizada cuando se conecta a un servidor en la misma mquina. Se utiliza un archivo de socket Unix siempre que no se especifique un nombre de servidor o si se especifica el nombre de servidor especiallocalhost.Si el servidor MySQL est ejecutndose en Windows 9x o Me, puede conectarse nicamente a travs de TCP/IP. Si el servidor se est ejecutando sobre Windows NT, 2000, XP, o 2003 y ha sido iniciado con la opcin--enable-named-pipe, puede tambin conectarse a travs de named pipes si el cliente se est ejecutando en la misma mquina que el servidor. El nombre de la named pipe es por defectoMySQL. Si no se especifica un nombre de servidor al conectar amysqld, un cliente MySQL intenta primero conectarse a la named pipe. Si esto no funciona, se conecta al puerto TCP/IP. Usted puede forzar la utilizacinde named pipes en windows utilizando.como el nombre de servidor. hostname.El error (2002)Can't connect to ...normalmente significa que no hay un servidor MySQL ejecutndose en el sistema o que usted est especificando un archivo de socket Unix o nmero de puerto TCP/IP al intentar conectarse al servidor.Comience por comprobar si hay un proceso llamadomysqldejecutndose en el servidor. (Utiliceps xa | grep mysqlden Unix o el Administrador de tareas en Windows). Si no existe ese proceso, debera iniciar el servidor. ConsulteSeccin2.9.2.3, Arrancar y resolver problemas del servidor MySQL.Si hay un procesomysqldejecutndose, puede comprobarlo ejecutando los siguientes comandos. El nmero de puerto o nombre del archivo socket de Unix pueden ser diferentes en su configuracin.host_iprepresenta el nmero de IP de la mquina donde se est ejecutando el servidor.represents the IP number of the machine where the server is running.shell> mysqladmin versionshell> mysqladmin variablesshell> mysqladmin -h `hostname` version variablesshell> mysqladmin -h `hostname` --port=3306 versionshell> mysqladmin -h host_ip versionshell> mysqladmin --protocol=socket --socket=/tmp/mysql.sock versionTenga en cuenta la utilizacin de acentos abiertos en vez de comillas en el comandohostname; esto provoca que la salida dehostname(es decir, el nombre de mquina actual) sea sustituida en el comandomysqladmin. Si no tiene ningn comandohostnameo est ejecutando sobre Windows, puede escribir manualmente el nombre de su mquina (sin acentos abiertos) tra la opcin-h. Tambin puede intentarlo con-h 127.0.0.1para conectarse con TCP/IP a la mquina local.Aqu hay algunas razones por las que el errorCan't connect to local MySQL serverpodra ocurrir: mysqldno se est ejecutando. Compruebe la lista de procesos de sus sistema operativo para asegurarse de que el procesomysqldest presente. Usted est ejecutando un sistema que utiliza hilos tipo MIT-pthreads. Si est ejecutando un sistema que no tiene hilos antivos,mysqldutiliza el paquete de MIT-pthreads package. ConsulteSeccin2.1.1, Sistemas operativos que MySQL soporta. An as, no todas las versiones de MIT-pthreads soportan los archivos socket de Unix. En un sistema sin soporte para archivos socket, siempre debe especificar el nombre de mquina explcitamente cuando se conecte al servidor. Intente utilizar este comando para comprobar la conexin con el servidor: shell> mysqladmin -h `hostname` version Alguien ha borrado el archivo socket de Unix quemysqldutiliza (/tmp/mysql.sockpor defecto). Por ejemplo, usted podra tener un trabajo decronque elimine los archivos antiguos del directorio/tmp. Siempre puede ejecutarmysqladmin versionpara comprobar si el archivo socket de Unix que to check whether the Unix socket file thatmysqladminest intentando utilizar existe realmente. La solucin en este caso es cambiar el trabajo decronpara que no eliminemysql.socko colocar el archivo socket en algn otro lugar. ConsulteSeccinA.4.5, Cmo proteger o cambiar el fichero socket de MySQL/tmp/mysql.sock. Usted ha iniciado el servidormysqldcon la opcin--socket=/path/to/socket, pero ha olvidado decirle al programa cliente el nuevo nombre del archivo socket. Si cambia la ruta del socket en el servidor, tambin tiene que notificrselo a los programas cliente. Puede hacer esto proporcionndole al cliente la misma opcin--socketal ejecutarlo. Tambin debe asegurarse de que los programas cliente tienen permiso para acceder al archivomysql.sock. Para averiguar donde est almacenado el archivo, puede hacer: shell> netstat -ln | grep mysqlConsulteSeccinA.4.5, Cmo proteger o cambiar el fichero socket de MySQL/tmp/mysql.sock. Usted est ejecutando Linux y un hilo del servidor ha muerto (volcado de memoria). En este caso, usted debe matar el resto de hilos demysqld(por ejemplo, conkillo con el scriptmysql_zap) antes de que pueda reiniciar el servidor MySQL. ConsulteSeccinA.4.2, Qu hacer si MySQL sigue fallando (crashing). El servidor o el programa cliente podran no tener los privilegios de acceso adecuados para el directorio que almacena el archivo socket de Unix, o para el archivo mismo. En este caso, usted debe cambiar los privilegios del directorio o los del archivo mismo para que el servidor y los clientes puedan acceder a ellos, o reiniciarmysqldcon una opcin--socketque especifique un nombre de archivo de socket en un directorio donde el servidor pueda crearlo y los programas cliente puedan acceder a l.Si usted obtiene el mensaje de errorCan't connect to MySQL server on some_host, puede intentar los siguientes procedimientos para averiguar cual es el problema: Compruebe si el servidor se est ejecutando en esa mquina mediante la ejecucin detelnet some_host 3306y presionando la tecla Enter unas cuantas veces. (3306 es el puerto por defecto de MySQL. Cambie el valor si su servidor est escuchando en un puerto diferente.) Si hay un servidor MySQL ejecutndose y escuchando al puerto, debera obtener una respuesta que incluyera el nmero de versin del servidor. Si obtiene un error comotelnet: Unable to connect to remote host: Connection refused, entonces no hay ningn servidor ejecutndose en el puerto dado. Si el servidor est ejecutndose en la mquina local, intente utilizarmysqladmin -h localhost variablespara conectar utilizando el archivo socket de Unix. Colmpruebe el nmero de puerto TCP/IP al que el servidor est configurado para escuchar (es el valor de la variableport.) Asegrese de que su servidormysqldno fue iniciado utilizando la opcin--skip-networking. Si lo fue no puede conectarse a l utilizando TCP/IP. Compruebe que no hay un cortafuegos bloqueando el acceso a MySQL. Aplicaciones como ZoneAlarm o el cortafuegos personal de Windows XP podra necesitar ser configurados para permitir el acceso externo a un servidor MySQL.A.2.3.Client does not support authentication protocolLas versiones de MySQL nmero 4.1 y superiores utilizan un protocolo de autentificacin basado en un algoritmo de hash de la clave que es incompatible con el que se utiliza en los clientes anteriores. Si actualiza su servidor a 4.1, los intentos de conectarse a l desde un cliente ms viejo pueden fallar con el siguiente mensaje:shell> mysqlClient does not support authentication protocol requestedby server; consider upgrading MySQL clientPara resolver este problema, debera utilizar alguno de los siguientes mtodos: Actualizar todos los programas clientes para que utilicen la librera de cliente 4.1.1 o posterior. Cuando se conecte al servidor con un programa cliente anterior al 4.1, utilice una cuenta que todava mantenga una clave al estilo pre-4.1. Reestablezca la clave al estilo pre-4.1 para cada usuario que necesite utilizar un programa cliente anterior a la versin 4.1. Esto puede hacerse utilizando la sentenciaSET PASSWORDy la funcinOLD_PASSWORD(): mysql> SET PASSWORD FOR -> 'some_user'@'some_host' = OLD_PASSWORD('newpwd');Una alternativa es utilizarUPDATEyFLUSH PRIVILEGES:mysql> UPDATE mysql.user SET Password = OLD_PASSWORD('newpwd') -> WHERE Host = 'some_host' AND User = 'some_user';mysql> FLUSH PRIVILEGES;Sustituya la clave que quiera utilizar por newpwd en los ejemplos precedentes. MySQL no puede retornar la clave original, as que es necesario introducir una clave nueva. Indique al servidor que utilice el algoritmo de hashing de claves antiguo:. Iniciemysqldcon la opcin--old-passwords.. Asigne una clave con formato antiguo a cada cuenta que tenga su clave actualizada al formato ms largo de la versin 4.1. Puede identificar estas cuentas con la siguiente consulta:. mysql> SELECT Host, User, Password FROM mysql.user. -> WHERE LENGTH(Password) > 16;Para cada registro de cuentas que se muestre en la consulta, utilice los valores deHostyUsery asigne una clave utilizando la funcinOLD_PASSWORD()ySET PASSWORDoUPDATE, tal como se ha explicado previamente.Nota: En PHP, la extensinmysqlno soporta el nuevo protocolo de autentificacin en MySQL 4.1.1 y superior. Esto es as independientemente de la versin de PHP utilizada. Si desea poder utilizar la extensinmysqlcon MySQL 4.1 seguir alguna de las indicaciones explicadas arriba para configurar MySQL con clientes antiguos. La extensinmysqli(que significa "MySQL mejorado" - "MySQL Improved"; nueva en PHP 5)escompatible con el nuevo algoritmo de hashing mejorado empleado en MySQL 4.1 y superiores, y sin ninguna configuracin especial necesaria que deba hacerse para utilizar esta nueva librera cliente de MySQL para PHP. Para ms informacin sobre la extensinmysqliconsultehttp://php.net/mysqli.For additional background on password hashing and authentication, ConsulteSeccin5.6.9, Hashing de contraseas en MySQL 4.1.A.2.4. La contrasea falla cuando se introduce interactivamenteLos programas cliente de MySQL piden una contrasea cuando son invocados con la opcin--passwordo-psin especificar ningn valor para la contrasea:shell> mysql -u user_name -pEnter password:En algunos sistemas, puede ocurrir que su contrasea funcione cuando es especificada en un archivo de opciones o en la lnea de comandos, pero no cuando sea introducida interactivamente en la lnea de comandos. Esto ocurre cuando la librera proveida por el sistema para leer contraseas limite los valores de stas a un nmero pequeo de caracteres (normalmente ocho). Eso es un problema con la librera del sistema, no con MySQL. Para poder solucionarlo, cambie su contrasea de MySQL a un valor que sea de ocho o menos caracteres de longitud, o ponga su constrasea en un archivo de opciones.A.2.5.La mquina 'host_name' est bloqueadaSi obtiene el siguiente error, significa quemysqldha recibido demasiados intentos de conexin desde la mquina'host_name'que han sido interrumpidos:Host 'host_name' is blocked because of many connection errors.Unblock with 'mysqladmin flush-hosts'El nmero de intentos de conexin interrumpidos se puede determinar con el valor de la variable de sistemamax_connect_errors. Trasmax_connect_errorsintentos fallidos,mysqldasume que hay algo que va mal (por ejemplo, que alguien est intentando romper la seguridad del sistema), y bloquea la mquina para que no pueda intentar volver a conectarse hasta que usted ejecute el comandomysqladmin flush-hostso introduzca la sentenciaFLUSH HOSTS. ConsulteSeccin5.3.3, Variables de sistema del servidor.Por defecto,mysqldbloquea una mquina tras 10 errores de conexin. Puede ajustar el valor iniciando el servidor as:shell> mysqld_safe --max_connect_errors=10000 &Si usted obtiene este mensaje de error para una mquina concreta, debera primero averiguar que no hay ningn problema con las conexiones TCP/IP desde esa mquina. Si est teniendo problemas de red, no hace ningn bien el incrementar el valor de la variablemax_connect_errors.A.2.6.Demasiadas conexionesSi obtiene un errorToo many connectionscuando intenta conectarse al servidormysqld, significa que todas las conexiones disponibles estn siendo utilizadas por otros clientes.El nmero de conexiones permitidas est controlado por la variable de sistemamax_connections. Su valor por defecto es 100. Si necesita soportar ms conexiones, debera reiniciarmysqldcon un valor ms grande de esta variable.mysqldrealmente permite conectarse amax_connections+1clientes. La conexin extra esta reservada para ser utilizada por cuentas que tienen el privilegioSUPER. Otorgando el privilegioSUPERa los administradores y no a usuarios normales (que no deberan necesitarlo), un administrador puede conectarse al servidor y utilizarSHOW PROCESSLISTpara diagnosticar problemas an cuando el mximo nmero de clientes sin privilegios estn conectados. ConsulteSeccin13.5.4.16, Sintaxis deSHOW PROCESSLIST.El nmero mximo de conexiones que MySQL puede soportar depende de la calidad de la librera de hilos de una plataforma dada. Linux o Solaris deberan ser capaces de soportar 500-1000 conexiones simultneas, dependiendo de cuanta RAM tenga y que estn haciendo los clientes. Los binarios estticos de Linux proveidos por MySQL AB pueden soportar hasta 4000 conexiones.A.2.7.Out of memorySi usted ejecuta una consulta utilizando el programa clientemysqly recibe un error como el siguiente, significa quemysqlno tiene suficiente memoria para almacenar el resultado completo de la consulta:mysql: Out of memory at line 42, 'malloc.c'mysql: needed 8136 byte (8k), memory in use: 12481367 bytes (12189k)ERROR 2008: MySQL client ran out of memoryPara remediarlo, primero compruebe si su consulta es correcta. Es razonable que devuelva tantas filas? Si no, corrjala y intntelo de nuevo. Si no es as, puede invocarmysqlcon la opcin--quick. Esto provoca que utilice la funcinmysql_use_result()de la API C para obtener el resultado, lo que hace que haya menos carga en el cliente (pero ms en el servidor).A.2.8.MySQL se ha apagadoEsta seccin tambin explica el error relacionadoLost connection to server during query.La razn ms comn para el errorMySQL server has gone awayes que el servidor ha agotado el tiempo de espera y ha cerrado la conexin. En este caso, normalmente obtendr uno de los siguientes cdigos de error (dependiendo del sistema operativo):Cdigo de errorDescripcin

CR_SERVER_GONE_ERROREl cliente no pudo enviar una consulta al servidor.

CR_SERVER_LOSTEl cliente no obtuvo ningn error al escribir al servidor pero tampoco obtuvo una respuesta completa (o ninguna respuesta) a la pregunta.

Por defecto, el servidor cierra la conexin tras ocho horas si no pasa nada. Puede cambiar el lmite de tiempo estableciendo la variablewait_timeoutcuadno iniciemysqldConsulteSeccin5.3.3, Variables de sistema del servidor.Si usted tiene un script, tiene que ejecutar la consulta de nuevo para que el cliente haga una reconexin automtica. Esto da por hecho que tiene la reconexin automtica activada en el cliente (que es la opcin por defecto en el cliente de lnea de comandosmysql).Otras razones comunes por las que puede aparecer el errorMySQL server has gone awayson: Usted (o el administrador de la base de datos) ha matado el hilo que se estaba ejecutando con una sentenciaKILLo el comandomysqladmin kill. Usted ha intentado ejecutar una sentencia tras cerrar la conexin con el servidor. Esto es sntoma de un error lgico en la aplicacin que debera ser corregido. Se ha agotado el tiempo de espera de una conexin TCP/IP desde el lado cliente. Esto puede ocurrir si usted ha estado utilizando los comandos:mysql_options(..., MYSQL_OPT_READ_TIMEOUT,...)omysql_options(..., MYSQL_OPT_WRITE_TIMEOUT,...). En este caso, aumentar el tiempo de espera puede ayudar a resolver el problema. Se ha agotado el tiempo de espera en el lado del servidor, y el cliente no tiene activada la opcin de reconexin automtica (la opcinreconnecten la estructuraMYSQLes igual a 0). Usted est utilizando un cliente windows y el servidor ha cortado la conexin (probablemente porquewait_timeoutha expirado) antes de que el comando fuese ejecutado.El problema en windows es que en algunos casos MySQL no obtiene un error desde el SO cuando escribe a la conexin TCP/IP desde el servidor, sino que obtiene el error cuando intenta leer la respuesta desde la conexin.En este caso, aunque el flagreconnecten la estructuraMYSQLsea igual a 1, MySQL no reconecta y vuelve a ejecutar la sentencia, ya que no sabe si el servidor recibi la sentencia original o no.La solucin a esto es o hacer unmysql_pingen la conexin si ha pasado mucho tiempo desde la ltima sentencia (esto es lo queMyODBChace) o establecer unwait_timeouten el servidormysqldtan alto que en la prctica, nunca llegue a sobrepasarse. Tambin puede obtener estos errores si enva una consulta al servidor que sea incorrecta o demasiado grande. Simysqldrecibe un paquete que es demasiado grande o fuera de lugar, asume que ha habido algn error con el cliente y cierra la conexin. Si necesita realizar grances consultas (por ejemplo, si est trabajando con columnasBLOBmuy grandes), debera incrementar el lmite de las consultas estableciendo la variable de servidormax_allowed_packet, que tiene un valor por defecto de 1MB. Tambin podra necesitar incrementar el tamao mximo de paquete en el lado cliente. Puede encontrar ms informacin para establecer el tamao de paquete enSeccinA.2.9, Packet too large. Tambin puede perder la conexin si enva un paquete de ms de 16MB y su cliente es anterior a la versin 4.0.8 y su servidor posterior a 4.0.8, o viceversa. Tambin puede ver el errorMySQL server has gone awaysi MySQL se inicia con la opcin--skip-networking. Ha encontrado un error por el que el servidor cay mientas ejecutaba una sentencia.Puede comprobar si el servidor MySQL cay y se reinici ejecutandomysqladmin versiony examinando el tiempo de ejecucin del servidor (uptime). Si la conexin del cliente se cort debido a quemysqldfall y se reninic, debera intentar encontrar la razn del fallo. Comience por comprobar si ejecutando la misma sentencia el servidor cae de nuevo. ConsulteSeccinA.4.2, Qu hacer si MySQL sigue fallando (crashing).Puede obtener ms informacin sobre las conexiones perdidas iniciando mysqld con la opcin--log-warnings=2. Esto registra algunos de los errores de desconexin en el archivohostname.err. ConsulteSeccin5.10.1, El registro de errroes (Error Log).Si quiere crear un informe de error en relacin a este problema, asegrese de incluir la siguiente informacin: Indique si el servidor MySQL muri. Puede enecontrar esta informacin en el registro de errores del servidor. ConsulteSeccinA.4.2, Qu hacer si MySQL sigue fallando (crashing). Si una consulta especfica mata amysqldy las tablas implicadas haban sido comprobadas conCHECK TABLEantes de ejecutar la consulta, puede proporcionar una prueba que permita reproducir el caso? ConsulteSeccinD.1.6, Crear un caso de prueba tras haber encontrado una tabla corrupta. Cual es el valor de la variable de sistemawait_timeouten el servidor MySQL? (mysqladmin variablesle da el valor de esta variable.) Ha intentado ejecutarmysqldcon la opcin--logpara determinar si la consulta problemtica aparece en el registro?Consulte tambinSeccinA.2.10, Errores de comunicacin y conexiones abortadas.ConsulteSeccin1.6.1.2, Hacer preguntas y reportar bugs.A.2.9.Packet too largeUn paquete de comunicacin es una nica sentencia SQL enviada al servidor MySQL o una nica fila que es enviada al cliente.En MySQL 3.23, el pquete ms grande posible es de 16MB, debido a los lmites del protocolo cliente/servidor. En MySQL 4.0.1 y superiores, el lmite es de 1GB.Cuando un cliente MySQL o el servidormysqldrecibe un paquete ms grande demax_allowed_packetbytes, este devuelve un errorPacket too largey cierra la conexin. Con algunos clientes, tambin podra obtener un errorLost connection to MySQL server during querysi el paquete de comunicacin es demasiado grande.Tanto el cliente como el servidor tienen su propia variablemax_allowed_packetas que si quiere gestionar paquetes grandes, debe aumentar esta variable tanto en el cliente como en el servidor.Si est utilizando el programa clientemysql, el valor por defecto de la variablemax_allowed_packetes de 16MB. Este es tambin el mximo valor permitido anteriormente a la versin MySQL 4.0. Para establecer un valor mayor desde 4.0 en adelante, iniciemysqlde la siguiente manera:mysql> mysql --max_allowed_packet=32MEsto establece el tamao del paquete en 32MB.El valor por defecto de la variablemax_allowed_packeten el servidor es de 1MB. Pue incrementar esto si el servidor necesita gestionar consultas grandes (por ejemplo, si est trabajando con columnasBLOBgrandes). Por ejemplo, para establecer la variable a 16MB, inicie el servidor as:mysql> mysqld --max_allowed_packet=16MPara versiones previas a MySQL 4.0, utilice esta sintaxis:mysql> mysqld --set-variable=max_allowed_packet=16MTambin puede utilizar un archivo de opciones para establecermax_allowed_packet. Por ejemplo, para establecer el valor para el servidor en 16MB, aada las siguientes lneas en su archivo de opciones:[mysqld]max_allowed_packet=16MPara versiones previas a MySQL 4.0, utilice esta sintaxis:[mysqld]set-variable = max_allowed_packet=16MEs seguro incrementar el valor de esta variable porque la memoria extra tan solo es utilizada cuando se necesite. Por ejemplo,mysqldsolo ocupa ms memoria cuando usted ejecuta una consulta grande o cuandomysqlddebe retornar una fila de resultados grande. El valor por defecto pequeo en la variable, es una precaucin para atrapar paquetes incorrectos entre el cliente y el servidor, y tambin para asegurarse de que usted no se queda sin memoria al utilizar paquetes grandes de manera accidental.Tambin puede sufrir problemas extraos con paquetes grandes si est utilizando valoresBLOBgrandes pero no ha dado amysqldacceso a suficiente memoria para gestionar la consulta. Si sospecha que este es el caso, intente aadirulimit -d 256000al principio del scriptmysqld_safey reiniciemysqld.A.2.10. Errores de comunicacin y conexiones abortadasEl registro de errores del servidor puede ser una fuente de informacin til sobre problemas de conexin. ConsulteSeccin5.10.1, El registro de errroes (Error Log). A partir de MySQl 3.23.40, si quiere iniciar el servidor con la opcin--warnings(o--log-warningsdesde MySQl 4.0.3 en adelante), usted podra encontrar mensajes como este en su registro de errores:010301 14:38:23 Aborted connection 854 to db: 'users' user: 'josh'Si un mensajeAborted connectionsaparece en el registro de errores, la causa puede ser alguna de las siguientes: El programa cliente no llam amysql_close()antes de salir. El cliente ha estado inactivo ms dewait_timeoutointeractive_timeoutsegundos, sin enviar ninguna peticin al servidor. ConsulteSeccin5.3.3, Variables de sistema del servidor. El programa cliente abort de manera abrupta en mitad de una transferencia de datos.Cuando alguna de estas cosas pasa, el servidor incrementa la variable de estadoAborted_clients.El servidor incrementa la variable de estadoAborted_connectscuando una de las siguientes cosas ocurren: Un cliente no tiene privilegios para conectar a una base de datos. Un cliente utiliza una contrasea incorrecta. Un paquete de conexin no contiene la informacin correcta. Se tarda ms deconnect_timeouten obtener un paqueta de conexin. ConsulteSeccin5.3.3, Variables de sistema del servidor.Si este tipo de cosas pasan, podra ser indicativo de que alguien est intentando entrar en su servidor!Otros motivos para los problemas con clientes que abortan o conexiones interrumpidas: Utilizacin del protocolo Ethernet con Linux, tanto en half como en full duplex. Muchos drivers de Ethernet en Linux tienen este error. Debera comprobar si su driver contiene este error transfiriendo un archivo enorme via FTP entre el cliente y el servidor. Si la transferencia entra en un modo de ejecucin-pausa-ejecucin-pausa, usted est experimentando el sndrome duplex de Linux. La nica solucin es cambiar el modo duplex tanto de su tarjeta de red como de su concentrador o switch tanto a full como a half duplex, y comprobar los resultados para determinar la mejor configuracin. Algunos problemas con la librera de hilos de ejecucin que causa interrupciones en las lecturas. TCP/IP mal configurado. Redes, concentradores, switches o cables defectuosos. Esto solo puede ser diagnosticado mediante el reemplazo de hardware. El valor de la variablemax_allowed_packetes demasiado pequeo o las consultas requieren ms memoria de la que tiene disponible paramysqld. ConsulteSeccinA.2.9, Packet too large.Consulte tambinSeccinA.2.8, MySQL se ha apagado.A.2.11.The table is fullHay varias maneras en que puede producirse un error de tabla llena: Cuando utiliza un servidor MySQL anterior a la versin 3.23 y una tabla temporal en memoria se hace ms grande detmp_table_sizebytes. Para evitar este problema puede utilizar la opcin-O tmp_table_size=#para hacer quemysqldincremente el valor temporal del tamao de tablas, o utilizar la opcinSQL_BIG_TABLESantes de ejecutar la consulta problemtica. ConsulteSeccin13.5.3, Sintaxis deSET.Tambin puede iniciarmysqldcon la opcin--big-tables. Esto es exactamente lo mismo que utilizar la opcinSQL_BIG_TABLESpara todas las consultas.A partir de MySQL 3.23, este problema no debera ocurrir. Si una tabla en memoria se hace ms grande quetmp_table_size, el servidor automticamente la convierte en una tabla de discoMyISAM. Est utilizando tablasInnoDBy se qued sin espacio en el espacio de tablasInnoDB. En este caso, la solucin es aumentar el espacio de tablasInnoDB. ConsulteSeccin15.7, Aadir y suprimir registros y ficheros de datosInnoDB. Est utilizando tablasISAMoMyISAMen un sistema operativo que tan solo soporta hasta 2GB de tamao de archivo, habiendo superado ya este lmite para el archivo de datos o de ndices. Est utilizando una tablaMyISAM, y el espacio requerido por la tabla excede a lo que permite el tamao de puntero interno. Si no especifica la opcin de tablaMAX_ROWScuando cree una tabla, MySQL utiliza la variable de sistemamyisam_data_pointer_size. Desde MySQL 5.0.6 en adelante, el valor por defecto es de 6 bytes, que es suficiente para permitir 65536 TB de datos. Antes de MySQL 5.0.6, el valor por defecto es de 4 bytes, que solo es suficiente para permitir 4 GB de datos. ConsulteSeccin5.3.3, Variables de sistema del servidor.Puede comprobar los tamaos mximos de datos e ndices mediante esta consulta:SHOW TABLE STATUS FROM database LIKE 'nombre_tabla';Tambin puede utilizarmyisamchk -dv /ruta/a/archivo-indice-de-tabla.Si el tamao del puntero es demasiado pequeo, puede corregir el problema utilizandoALTER TABLE:ALTER TABLE nombre_tabla MAX_ROWS=1000000000 AVG_ROW_LENGTH=nnn;Tiene que especificarAVG_ROW_LENGTHsolo para tablas con columnasBLOBoTEXT; en este caso, MySQL no puede optimizar el espacio requerido basndose nicamente en el nmero de filas.