2012-03-15 12 views
5

TL; DR:¿No se puede conectar a MySQL en Windows 7 usando JDBC, pero funciona a través de phpmyadmin y otras herramientas de administración?

Cada vez que intento utilizar JDBC para conectarse a un servidor MySQL local (que funciona en toneladas de otros clientes de SQL), que no se conecta en absoluto y me sale una excepción:

  • Excepción en hilo "principal" com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Comunicaciones fallo de enlace
  • .... seguimiento de la pila ....
  • causada por: java.net. SocketException: argumento inválido: connect

información más detallada:

Tengo un servidor local que ejecuta MySQL que puedo conectar a con el uso de la siguiente información:

  • dirección: 127.0.0.1 localhost o (ambos trabajo)
  • puerto: 3306
  • y mi nombre de usuario/contraseña/db nombrar

Utilización de las aplicaciones: HeidiSQL, phpMyAdmin, MySQL Workbench y mysqladmin

Correr mysqladmin versión confirma que el servidor está activo, trabajando, y tiene habilitado el protocolo TCP/IP.

Haciendo mysqladmin variables muestra que "skip_networking" está desactivado (ver a continuación la configuración completa).

El registro de MySQL no muestra nada fuera de lo común (también a continuación).

Estoy usando el conector JDBC v5.1.15, mysql-connector-java-5.1.15-bin.jar. Está en mi ruta de clase de proyecto con Eclipse.

Todos los firewalls de Windows 7 (Ultimate, 64bit si es necesario) están apagados.

Sin embargo, sigo recibiendo el error de seguimiento de la pila como se muestra a continuación. No puedo, por la vida de mí, descubrir qué ocurre cuando todo lo demás se puede conectar bien ...

He tratado de incluir toda la información relevante a continuación. Espero que sea algo simple y estúpido que he pasado por alto y no puedo encontrar porque estoy buscando demasiado ... pero eh quién sabe:/heh.

He intentado todo lo que he podido encontrar en otras preguntas similares en línea, pero nada parece funcionar (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 y otros)

Mi código de prueba:

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); 
    } 

} 

Seguimiento de la pila: http://pastebin.com/qv332y86

variables de MySQL volcado: 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 de 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 parece sugerir una problema con IPV6. ¿Es eso lo que estás usando? –

+0

+1: pregunta bien escrita. Además, ¿ha intentado cambiar la cadena de conexión a 127.0.0.1 como sugiere [este comentario] (http://stackoverflow.com/questions/8216713/java-net-socketexception-invalid-argument-connect#comment10343027_8347425)? – Deco

+0

¿Quizás su firewall bloquea las conexiones para java.exe? –

Respuesta

2

resultó que era de Java prefiriendo IPv6 ensuciar las cosas por lo que he tenido que añadir -Djava.net.preferIPv4Stack = true, pero como yo estaba corriendo cosas bajo Tomcat tuve que pasar por una forma indirecta de establecer la propiedad. No estoy seguro de cuál es la forma estándar de hacerlo (si corresponde), pero lo hice funcionar editando Catalina.bat y agregando -Djava.net.preferIPv4Stack = true al final del archivo. Ver:

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

La forma estándar de proporcionar esto es establecerlo/agregarlo a la variable de entorno JAVA_OPTS – GreyBeardedGeek

0

o para Tomcat, CATALINA_OPTS puede ajustarse en la variable de entorno

Cuestiones relacionadas