2011-08-26 9 views
6

Estoy tratando de establecer una conexión en mi aplicación Java con JDBC para acceder a mi base de datos en línea para poder insertar y consultar tablas. Aquí es lo que estoy tratando actualmente: (IP real/usuario/editado, pero tienen razón ya que he hecho similar a partir de un script PHP)Java: problemas para conectarse a la base de datos MySQL en línea usando JDBC

String url = "jdbc:mysql://984.168.199.70/my_db_name"; 
    String user = "my_username"; 
    String pass = "my_password"; 

Class.forName ("com.mysql.jdbc.Driver").newInstance(); 
    Connection conn = (Connection) DriverManager.getConnection(url, user, pass); 
    stmt = (Statement) conn.createStatement(); 

Pero esto no funciona, me da la error:

Exception in thread "main" com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: 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. 

Y el registro de errores es bastante largo después de eso.

Solo para señalar: me he conectado a este servidor antes de usar un script PHP, y he usado JDBC para conectarme e interactuar con mis bases de datos locales de MySQL.

Gracias por cualquier ayuda.

+0

¿Se abrió cualquier puerto especial para MySQL, o es el predeterminado? – sgibly

+0

Además, consulte http://stackoverflow.com/questions/2102912/cant-make-jdbc-connection-to-mysql-using-java-intellij-and-linux – sgibly

+1

En cuanto al problema concreto, consulte http: // stackoverflow.com/questions/2983248/jdbc-with-mysql/2985169#2985169 En cuanto al código que ha publicado hasta ahora, esos cambios innecesarios me hacen pensar que en realidad importó clases de implementación concretas de MySQL para 'Connection' y' Statement'. Si bien no es necesariamente la causa de su problema, esta es una * mala práctica *. ¡Siempre declare contra las interfaces 'java.sql. *'! Si alguna vez actualiza el controlador o cambia la base de datos, su código JDBC se rompería y necesitaría una reescritura/reconstrucción completa. – BalusC

Respuesta

2

Tuve este problema también y siempre (en mi caso) se ha reducido a una URL jdbc incorrecta, p. número de puerto erróneo/incorrecto (sé que su código de muestra ha sido editado pero no especifica ningún puerto) o dirección IP incorrecta, al no poder verificar que mysql se está ejecutando y aceptando conexiones en el puerto y la IP que está esperando. Compruebe la dirección de vinculación en su my.cnf contra la dirección IP en su url jdbc

+0

No estoy seguro de qué puerto (si lo hay) debo especificar ... El servidor que tengo está alojado en Godaddy .com, que nunca es fácil de tratar con – JDS

+0

, el puerto predeterminado es 3306, por lo que su URL jdbc debería ser como jdbc: mysql: //84.168.199.70: 3306/my_db_name, entonces como BalusC dijo eliminar los moldes (de conexión). Google rápido mostró esto, podría ayudar http://help.godaddy.com/article/262 – eon

+0

gracias, pero todavía no hubo suerte. Lo molesto es que un script PHP básico con la misma IP/nombre de usuario/contraseña funciona perfectamente. ¿Godaddy no permite que Java tenga acceso o algo así? – JDS

1

Respondiendo a mi propia pregunta aquí, porque el código que tenía estaba bien. El problema fue con mi configuración GoDaddy.

Básicamente cuando está creando una base de datos MySQL con estos tipos, asegúrese de tener "Permitir acceso directo a la base de datos" establecido en SÍ. Aparentemente mi otra base de datos no lo era.

Aún no respondo la pregunta por un tiempo en caso de que otras personas tengan alguna entrada. Estas cosas de configuración siempre me dan ...

+0

estoy enfrentando exactamente lo mismo. Estoy usando el servicio gratuito de 000webhost.com para eso. ¿Mismo error? ¿Alguna idea de cómo puede solucionar problemas o encontrar el "permitir el acceso directo" a la base de datos? –

Cuestiones relacionadas