2012-06-27 12 views
5

tengo el siguiente mensaje de error:cómo entender "no se puede conectar" mensajes de error de mysql?

SQLSTATE [HY000] [2003] no puede conectar con el servidor MySQL en '192.168.50.45' (4)

¿Cómo voy a analizar esta (Tengo HY000, tengo 2003 y tengo el (4).

+0

¿Qué quiere decir con "Tengo HY000, tengo 2003 y tengo el (4)" – bretterer

+0

¿es error '10061'? – alfasin

+0

Posiblemente respondida aquí: http://stackoverflow.com/questions/2138959/confusing-pdo-only-problem-cant-connect-through-socket-access-denied-cant-co – JohnP

Respuesta

10

HY000 es un código de error de nivel ODBC muy general, y 2003 es el código de error específico de MySQL que significa que la conexión inicial del servidor falló. 4 es el código de error de la llamada fallida del nivel del sistema operativo que el controlador de MySQL intentó m Ake. (Por ejemplo, en Linux verá "(111)" cuando se rechazó la conexión, porque la llamada connect() falló con el código de error ECONNREFUSED, que tiene un valor de 111.)

+1

Ok, entonces ¿cómo sabría lo que 4 significa? Estoy en Ubuntu –

+0

No lo haría, a menos que sepa exactamente qué llamada al sistema está fallando. – cdhowie

4

Usando la herramienta perror que viene con MySQL:

shell> perror 4 
OS error code 4: Interrupted system call 

podría a bug donde se informó de error incorrecto, en este caso, puede ser que un simple tiempo de espera de conexión (error 111)

3

Fwiw, después de haber pasado alrededor de 2-3 meses buscando en esto de una Varias maneras, hemos llegado a la conclusión de que (al menos para nosotros), el (4) error ocurre cuando la red también es lleno de datos para que la conexión se complete en un tiempo razonable. de nuestras investigaciones, el (4) ocurre a la mitad del proceso de apretón de manos. Puede ver esto en un entorno Unix usando 'netem' para falsificar la congestión de la red.

La solución rápida es aumentar el parámetro de tiempo de espera de conexión. Esto ocultará cualquier (4) error, pero puede no ser la solución al problema. La verdadera solución es ver qué está pasando en el extremo de DB en ese momento. Si está procesando una gran cantidad de datos cuando esto sucede, puede ser una buena idea ver si puede dividir esto en trozos más pequeños, o incluso pasar el procesamiento a un servidor diferente, si tiene ese lujo.

1

Me tocó enfrentar este problema. Aumente el tiempo de conexión finalizado finalmente.

0

Estaba luchando con el mismo problema.

Deshabilitar las búsquedas de nombre de host DNS resolvió el problema para mí.

[mysqld] ... ... skip-name-resolve

No se olvide de reiniciar MySQL para tener efecto.

0

@cdhowie Si bien puede tener razón en otras circunstancias, con ese error en particular el (4) es un error de la biblioteca del cliente mysql, causado por un apretón de manos fallido. Es realmente visible en el código fuente. La razón normal es demasiados datos que causan un tiempo de espera interno. Hacer 'habitación' para la conexión normalmente lo ordena sin enmascarar el problema, como aumentar el tiempo de espera o aumentar el ancho de banda.

Cuestiones relacionadas