2010-01-30 21 views
7

Tengo este juego de Tetris escrito en Java, que usa DB para registrar puntajes altos. Funcionó bien siempre y cuando yo estaba usando remota base de datos MySQL, pero ahora estoy tratando de establecer localhost DB usando XAMPP MySQL y se sigue adelante como "excepción de SQL: fallo del enlace de comunicaciones" en el comando:¿Cómo conectar el DB local XAMPP MySQL usando JDBC?

con = java.sql.DriverManager.getConnection("jdbc:mysql://localhost/score", user, psw); 

I Supongo que es una URL incorrecta o una configuración de base de datos, pero realmente no sé qué verificar. ¿Algunas ideas?

EDITAR: Mi amigo ha solucionado mi problema reemplazando "localhost" en URL por "127.0.0.1" (lo cual fue bastante vergonzoso como seguramente se puede imaginar: P).

Así que la pregunta es: ¿Por qué XAMPP no puede traducir "localhost" a la dirección IP y cómo solucionarlo?

+0

se puede navegar a la base de datos MySQL con el Query Browser? Recuerdo que me encontré con un problema similar con una aplicación de Java que se negó a reconocer nombres en la cadena de conexión a MySQL. –

+0

No olvide este importante paso en este enlace - http://ferdidolot.wordpress.com/2009/06/14/java-mysql-jdbc-tutorial-using-netbeans-part-1/ –

+0

[Esta publicación] (http: //forums.netbeans.org/ntopic4896.html) afirma haberlo solucionado. Echale un vistazo. – duffymo

Respuesta

7

¿Por qué no es capaz de traducir XAMPP "localhost" en dirección de IP y cómo solucionarlo?

Esto no es un problema de XAMPP ni un problema de programación. Esto es más un problema de DNS.

Para empezar, ¿tiene un archivo %SystemRoot%/system32/drivers/etc/hosts con la siguiente línea como primera línea? (Por lo tanto, después de todos los comentarios, pero antes que cualquier otra declaración de acogida)

127.0.0.1 localhost 

Actualización: de acuerdo con los comentarios que he Googled un poco y que parezca que el controlador JDBC de MySQL no come IPv6 direcciones en absoluto. En otras palabras, deberá cambiar ::1 a 127.0.0.1. Pero también encontré this topic que menciona que se puede utilizar el siguiente argumento JVM para solucionar este problema:

java -Djava.net.preferIPv4Stack=true 
+0

¿Qué pasa con ":: 1 localhost"? Eso debería hacer lo mismo, ¿no? –

+0

Eso tiene sentido, gracias por su investigación;) –

1

En MySql tiene que permitir el acceso de su usuario de localhost explícitamente. Aquí hay un ejemplo (tomado de here):

mysql> grant usage on *.* to [email protected] identified by 'amarokpasswd'; 
mysql> grant all privileges on amarokdb.* to [email protected] ; 
+0

Estoy usando root, pero también he intentado crear usuarios y darle acceso y todos los privilegios, solo para estar seguro ... no funciona:/ –

2

Probé y tiene una conexión exitosa. Primero crea una base de datos en phpmyadmin - por ejemplo. 'Mibd' y luego en el código ponen connection.url con este valor

'jdbc:mysql://localhost:3306/mydb' 

Si no se crea una base de datos primero no lo puedo conectar

Cuestiones relacionadas