2010-01-30 25 views
7

Ho questo gioco Tetris scritto in Java, che utilizza DB per registrare punteggi più alti. Ha funzionato bene fintanto che stavo usando remoto DB MySQL, ma ora sto cercando di impostare localhost DB usando XAMPP MySQL e continua ad andare come "SQLException: errore di collegamento di comunicazione" a comando:Come connettere il DB locale MySQL di XAMPP usando JDBC?

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

I Immagino che sia un URL sbagliato o una configurazione DB, ma non so davvero cosa controllare. Qualche idea?

MODIFICA: Il mio amico ha risolto il problema sostituendo "localhost" nell'URL con "127.0.0.1" (il che era piuttosto imbarazzante, come potete sicuramente immaginare: P).

Quindi la domanda è: Perché XAMPP non è in grado di tradurre "localhost" in indirizzo IP e come risolverlo?

+0

Puoi selezionare il database MySQL con il Query Browser? Ricordo di essermi imbattuto in un problema simile con un'app Java che si rifiutava di riconoscere il nome nella stringa di connessione su MySQL. –

+0

Non dimenticare questo passo importante su questo link - http://ferdidolot.wordpress.com/2009/06/14/java-mysql-jdbc-tutorial-using-netbeans-part-1/ –

+0

[Questo post] (http: //forums.netbeans.org/ntopic4896.html) afferma di averlo risolto. Controlla. – duffymo

risposta

7

Perché non è in grado di tradurre XAMPP "localhost" in indirizzo IP e come risolvere il problema?

Questo non è un problema XAMPP né un problema di programmazione. Questo è più un problema DNS.

Per iniziare, si dispone di un file %SystemRoot%/system32/drivers/etc/hosts con la riga seguente come prima riga? (In tal modo, dopo tutti i commenti, ma prima di qualsiasi altra dichiarazione ospitanti)

127.0.0.1 localhost 

Aggiornamento: come per i commenti che ho Googled un po 'e sembrare che il driver MySQL JDBC non mangia IPv6 indirizzi affatto. In altre parole, dovrai modificare ::1 in 127.0.0.1. Ma ho anche trovato this topic che menziona che è possibile utilizzare il seguente argomento JVM per risolvere questo problema:

java -Djava.net.preferIPv4Stack=true 
+0

Che dire di ":: localhost"? Questo dovrebbe fare lo stesso, non dovrebbe? –

+0

Questo ha senso, grazie per la tua ricerca;) –

1

In MySql è necessario consentire l'accesso per l'utente da localhost in modo esplicito. Ecco un esempio (tratto da here):

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

Sto usando root, ma ho anche provato a creare utente e dargli accesso e tutti i privilegi, solo per assicurati che ... non funzioni:/ –

2

ho cercato e ottenuto una connessione. Prima crea un database in phpmyadmin - es. 'Mydb' e poi nel codice messo connection.url con questo valore

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

Se non si crea un database prima non ci vorrà collegare

Problemi correlati