Har*_*eep 5 java mysql windows jdbc
TL; DR:
每次我尝试使用JDBC连接到本地MySQL服务器(适用于大量其他sql客户端)时,它根本不连接,我得到一个例外:
更详细的信息:
我有一个运行的本地MySQL服务器,我可以使用以下信息连接到:
使用应用程序:HeidiSQL,phpmyadmin,MySQL Workbench和mysqladmin
运行mysqladmin版本确认服务器已启动,正常工作,并启用了tcp/ip.
做mysqladmin变量显示"skip_networking"已关闭(完整配置见下文).
MySQL日志没有显示任何异常(也在下面).
我正在使用JDBC连接器v5.1.15,mysql-connector-java-5.1.15-bin.jar.它在Eclipse的项目类路径中.
所有Windows 7(Ultimate,64bit,如果重要的话)防火墙都关闭了.
然而,我仍然得到堆栈跟踪错误,如下所示.我不能为我的生活找出什么是错的,当其他一切都能够连接得很好......
我试图在下面包含所有相关信息.我希望它只是一些简单而愚蠢的东西,我忽略了,找不到因为我看起来太难了......但是呃谁知道:/嘿.
我用尽了一切我已经能够在其他类似的问题在网上找到,但似乎没有任何工作(包括/sf/answers/208961861/,/sf/answers/147216471/,https://serverfault.com/questions/89955/unable-to-connect-to-mysql-through-jdbc-connector-through-tomcat-or-externally和others)
我的测试代码:
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);
}
}
Run Code Online (Sandbox Code Playgroud)
堆栈跟踪:http://pastebin.com/qv332y86
MySQL变量转储:http://pastebin.com/merSEDdD
My.ini:http://pastebin.com/EWZX2enz
MySQL mysqladmin版本:
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
Run Code Online (Sandbox Code Playgroud)
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
Run Code Online (Sandbox Code Playgroud)
事实证明,是 Java 更喜欢 IPv6,所以我必须添加 -Djava.net.preferIPv4Stack=true,但由于我在 tomcat 下运行,所以我必须通过一种迂回的方式来设置属性。我不确定执行此操作的标准方法是什么(如果有),但我通过编辑 Catalina.bat 并将 -Djava.net.preferIPv4Stack=true 添加到文件末尾来使其工作。看:
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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4081 次 |
| 最近记录: |