2011-06-04 18 views
6

Así que agregué MySQL Connector/J 5.1.16 a la ruta de compilación de mi proyecto. Estoy usando el paquete predeterminado de OSX Java y MAMP Pro 1.9.4 con MySQL 5.1.44 y Eclipse.conecte java a mysql usando jdbc en osx

He creado una aplicación Java sencilla con la siguiente función:

private static String dbUrl = "jdbc:mysql://127.0.0.1:3306/mpp"; 
private static String dbUsername = "root"; 
private static String dbPassword = "root"; 

private Statement statement = null; 

private void dbConnect() { 


try { 
    Class.forName("com.mysql.jdbc.Driver"); 
    Connection connection = DriverManager.getConnection(dbUrl, dbUsername, dbPassword); 
    statement = connection.createStatement(); 

} catch(SQLException e) { 
    System.err.print(e.getMessage() + " ARGH!"); 
} catch(Exception e) { 
    System.err.print(e.getMessage() + " FUUUUUUUUUU!"); 
} 
} 

Cuando lo ejecuto me sale el siguiente error:

Communications link failure 

The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server. ARGH! 

Busqué en Google y buscó durante aproximadamente una hora sin éxito ¿Alguna idea sobre cómo solucionar este problema? El controlador JDBC debería estar bien, lo probé un poco.

EDITAR

Intenté funcionar esto a través de la consola

SnowCave:src stefanschipor$ java -cp $CLASSPATH test 

Me da la misma salida que el anterior

+0

Quizás un problema de firewall. Es dbUrl correcto? ¿Puedes conectarte a MySQL desde alguna consola cliente? –

+0

en su caso puerto defarado localhost: 3306 – mKorbel

+0

btw nice mensaje de error: P – RMT

Respuesta

13

OK, esto es solo una tontería. :)

Ha abierto MAMP, vaya a Servidor> MySQL y desmarque "Permitir acceso local solamente", que está marcado de forma predeterminada. Esto es extraño ya que lo que estoy haciendo es local, pero de todos modos ...

Mi programa parece funcionar y los comandos sugeridos por @JamesA también producen el resultado esperado.

¡Hurra!

+0

Esto funcionó para mí. ¡Gracias, por publicar la solución! – Ian

+0

Podría ser que esté utilizando el puerto incorrecto en la conexión JDBC. Por ejemplo, si está utilizando MAMP, el puerto podría ser 8889 en su lugar. Este es el problema exacto que tuve, espero que sea útil. – RHE

+0

En MAMP PRO 3.3, debe * verificar * "Permitir acceso a la red a MySql" y elegir "solo desde esta Mac". –

2

¿Seguro MySQL se ejecuta en el puerto 3306?


Si el demonio de MySQL está escuchando en el puerto 3306 lsof -i :3306 debería volver:

COMMAND PID  USER FD TYPE  DEVICE SIZE/OFF NODE NAME 
mysqld 7616 username 10u IPv6 0x1fbf6940  0t0 TCP *:mysql (LISTEN) 

una conexión directa al puerto utilizando nc localhost 3306 debe devolver:

H 
5.5.969]G.Mw4??9cfUY?k!^:D&mysql_native_password 

donde 5.5.969 es el número de versión de mysql


También puede probar una herramienta como DbVisualizer para probar su dirección URL de conexión.

+0

Apagué el cortafuegos, pero lo habilité y permití Java de todos modos. Sigue igual :) – GreenDude

+0

Ejecuté el comando en la Terminal pero no obtuve ningún resultado. Sin embargo, el puerto debería estar bien, aquí hay una captura de pantalla de mi configuración de MAMP http://grab.by/ahFv – GreenDude

+0

¿Cuál es su salida de 'lsof -i: 3306'? – jamesallman

0

También tengo este misterioso error en OSX y no encontré ninguna solución la primera vez que se produjo el error. En mi caso ocurre si la estructura de la base de datos se modificó o si las tablas se eliminaron/crearon durante el desarrollo (MySQL como fuente de datos para JBoss). En todos los casos, puedo evitar el error si cierro MySQL después de las modificaciones y lo reinicio antes de que comience JBoss.

+0

Reinició MAMP, todavía no hubo suerte :) – GreenDude

0

necesita usar el puerto localhost: 8889 o cualquier puerto que encuentre en MAMP> Configuraciones> Puertos> Puerto MySQL. ¡Entonces su conexión tendrá éxito!

Cuestiones relacionadas