2012-03-15 7 views
5

TL; DR:Impossibile collegarsi a MySQL su Windows 7 usando JDBC, ma funziona tramite phpmyadmin e altri strumenti di amministrazione?

Ogni volta che tento di usare JDBC per connettersi a un server MySQL locale (che funziona su tonnellate di altri client SQL), ma non si collega a tutti e ottengo un'eccezione:

  • Exception in thread "main" com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications Link fallimento
  • .... stack trace ....
  • causati da: java.net. SocketException: argomento non valido: connect

più dettagliate informazioni:

Ho un server MySQL locale che esegue che è possibile connettersi a con l'utilizzo le seguenti informazioni:

  • indirizzo: localhost o 127.0.0.1 (entrambi lavoro)
  • porto: 3306
  • e il mio nome utente/password/db citarne

Utilizzando le applicazioni: HeidiSQL, phpMyAdmin, MySQL Workbench e mysqladmin

Esecuzione mysqladmin versione conferma che il server è attivo, lavorando, ed ha TCP/IP abilitato.

Fare variabili mysqladmin indica che "skip_networking" è disattivato (vedere sotto per la configurazione completa).

Il log MySQL non mostra nulla di straordinario (anche di seguito).

Utilizzo il connettore JDBC v5.1.15, mysql-connector-java-5.1.15-bin.jar. È nel mio percorso di classe del progetto con Eclipse.

Tutti i firewall di Windows 7 (Ultimate, 64 bit se è importante) sono disattivati.

Eppure ottengo ancora l'errore di traccia stack come mostrato di seguito. Non posso per la vita di me capire cosa c'è che non va quando tutto il resto è in grado di connettersi bene ...

Ho cercato di includere tutte le informazioni rilevanti di seguito. Spero che sia solo qualcosa di semplice e stupido che ho trascurato e non riesco a trovare perché sto cercando troppo difficile ... ma eh chi lo sa:/heh.

Ho provato tutto quello che sono stato in grado di trovare in altre domande simili online ma niente sembra funzionare (incl.https://stackoverflow.com/a/2985169/211750, https://stackoverflow.com/a/2103092/211750, https://serverfault.com/questions/89955/unable-to-connect-to-mysql-through-jdbc-connector-through-tomcat-or-externally e altri)

mio codice di prova:

package sqltest; 


import com.mysql.jdbc.Driver; 
import java.sql.DriverManager; 
import java.util.Properties; 

public class main { 

    public static void main(String[] args) throws Exception { 
     String url = "jdbc:mysql://localhost:3306/dbname?user=user&password=****&";   

     Driver driver = (Driver) Class.forName("com.mysql.jdbc.Driver").newInstance(); 

     DriverManager.getConnection(url); 
    } 

} 

traccia stack: http://pastebin.com/qv332y86

variabili MySQL Dump: http://pastebin.com/merSEDdD

my.ini: http://pastebin.com/EWZX2enz

MySQL mysqladmin versio n:

Server version   5.5.20-log 
Protocol version  10 
Connection    localhost via TCP/IP 
TCP port    3306 
Uptime:     1 min 37 sec 

Threads: 1 Questions: 17 Slow queries: 0 Opens: 33 Flush tables: 1 Open tables: 26 Queries per second avg: 0.175 

log di MySQL:

120314 21:37:20 [Note] Plugin 'FEDERATED' is disabled. 
120314 21:37:20 InnoDB: The InnoDB memory heap is disabled 
120314 21:37:20 InnoDB: Mutexes and rw_locks use Windows interlocked functions 
120314 21:37:20 InnoDB: Compressed tables use zlib 1.2.3 
120314 21:37:20 InnoDB: Initializing buffer pool, size = 128.0M 
120314 21:37:20 InnoDB: Completed initialization of buffer pool 
120314 21:37:20 InnoDB: highest supported file format is Barracuda. 
120314 21:37:20 InnoDB: Waiting for the background threads to start 
120314 21:37:21 InnoDB: 1.1.8 started; log sequence number 1619921 
120314 21:37:21 [Note] Event Scheduler: Loaded 0 events 
120314 21:37:21 [Note] wampmysqld: ready for connections. 
Version: '5.5.20-log' socket: '' port: 3306 MySQL Community Server (GPL) 
120314 21:38:02 [Note] wampmysqld: Normal shutdown 

120314 21:38:02 [Note] Event Scheduler: Purging the queue. 0 events 
120314 21:38:02 InnoDB: Starting shutdown... 
120314 21:38:02 InnoDB: Shutdown completed; log sequence number 1619921 
120314 21:38:02 [Note] wampmysqld: Shutdown complete 
+1

http://stackoverflow.com/questions/8216713/java-net-socketexception-invalid-argument-connect sembra suggerire una problema con IPV6. E 'quello che stai usando? –

+0

+1: domanda ben scritta. Inoltre: hai provato a cambiare la stringa di connessione su 127.0.0.1 come [questo commento] (http://stackoverflow.com/questions/8216713/java-net-socketexception-invalid-argument-connect#comment10343027_8347425) suggerisce? – Deco

+0

Forse il firewall blocca le connessioni per java.exe? –

risposta

2

Si è rivelata Java preferendo IPv6 scompigliare le cose in modo ho dovuto aggiungere -Djava.net.preferIPv4Stack = true, ma dal momento che stavo correndo cose sotto tomcat ho dovuto passare attraverso un modo rotondo di impostare la proprietà. Non sono sicuro di quale sia il metodo standard (se esiste), ma ho funzionato modificando Catalina.bat e aggiungendo -Djava.net.preferIPv4Stack = true alla fine del file. Vedi:

rem Execute Java with the applicable properties 
if not "%JPDA%" == "" goto doJpda 
if not "%SECURITY_POLICY_FILE%" == "" goto doSecurity 
%_EXECJAVA% %JAVA_OPTS% %CATALINA_OPTS% %DEBUG_OPTS% -Djava.net.preferIPv4Stack=true -Djava.endorsed.dirs="%JAVA_ENDORSED_DIRS%" -classpath "%CLASSPATH%" -Dcatalina.base="%CATALINA_BASE%" -Dcatalina.home="%CATALINA_HOME%" -Djava.io.tmpdir="%CATALINA_TMPDIR%" %MAINCLASS% %CMD_LINE_ARGS% %ACTION% 
goto end 
:doSecurity 
%_EXECJAVA% %JAVA_OPTS% %CATALINA_OPTS% %DEBUG_OPTS% -Djava.net.preferIPv4Stack=true -Djava.endorsed.dirs="%JAVA_ENDORSED_DIRS%" -classpath "%CLASSPATH%" -Djava.security.manager -Djava.security.policy=="%SECURITY_POLICY_FILE%" -Dcatalina.base="%CATALINA_BASE%" -Dcatalina.home="%CATALINA_HOME%" -Djava.io.tmpdir="%CATALINA_TMPDIR%" %MAINCLASS% %CMD_LINE_ARGS% %ACTION% 
goto end 
:doJpda 
if not "%SECURITY_POLICY_FILE%" == "" goto doSecurityJpda 
%_EXECJAVA% %JAVA_OPTS% %CATALINA_OPTS% %JPDA_OPTS% %DEBUG_OPTS% -Djava.net.preferIPv4Stack=true -Djava.endorsed.dirs="%JAVA_ENDORSED_DIRS%" -classpath "%CLASSPATH%" -Dcatalina.base="%CATALINA_BASE%" -Dcatalina.home="%CATALINA_HOME%" -Djava.io.tmpdir="%CATALINA_TMPDIR%" %MAINCLASS% %CMD_LINE_ARGS% %ACTION% 
goto end 
:doSecurityJpda 
%_EXECJAVA% %JAVA_OPTS% %CATALINA_OPTS% %JPDA_OPTS% %DEBUG_OPTS% -Djava.net.preferIPv4Stack=true -Djava.endorsed.dirs="%JAVA_ENDORSED_DIRS%" -classpath "%CLASSPATH%" -Djava.security.manager -Djava.security.policy=="%SECURITY_POLICY_FILE%" -Dcatalina.base="%CATALINA_BASE%" -Dcatalina.home="%CATALINA_HOME%" -Djava.io.tmpdir="%CATALINA_TMPDIR%" %MAINCLASS% %CMD_LINE_ARGS% %ACTION% 
goto end 

:end 
+1

Il modo standard per fornire ciò è impostandolo/aggiungendolo alla variabile di ambiente JAVA_OPTS – GreyBeardedGeek

0

o per Tomcat, CATALINA_OPTS può essere impostato in variabile di ambiente

Problemi correlati