我得到一个错误: com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Could not create connection to database server.
编辑:链接到堆栈跟踪
这是错误的最后一部分,说它是一个错误 NullPointerException
:
at armyofdragons.mule.mysql.Database.<init>(Database.java:28)
at Main.main(Main.java:6)
Caused by: java.lang.NullPointerException
at com.mysql.jdbc.ConnectionImpl.getServerCharset(ConnectionImpl.java:2997)
at com.mysql.jdbc.MysqlIO.sendConnectionAttributes(MysqlIO.java:1934)
at com.mysql.jdbc.MysqlIO.proceedHandshakeWithPluggableAuthentication(MysqlIO.java:1863)
at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1226)
at com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2253)
at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2284)
... 14 more
`
我的url字符串:“jdbc:mysql用法://127.0.0.1:3306/schemaname?useunicode=true&characterencoding=utf-8&zerodatetimebehavior=converttonull&servertimezone=gmt“
我的连接代码段:
connection = null;
try {
Class.forName("com.mysql.jdbc.Driver").newInstance();
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (InstantiationException e) {
e.printStackTrace();
}
try {
connection = DriverManager.getConnection(URL, "admin", "passwordcensored123");
} catch (SQLException e) {
e.printStackTrace();
}
我已经使用了正确的模式/数据库名称、用户名、密码和所有其他需要的“要求”。我还将绑定地址设置为 127.0.0.1
和港口到 3306
. 数据库是在线的,我已经确保服务正在运行。
2条答案
按热度按时间vjhs03f71#
根据https://dev.mysql.com/doc/connector-j/5.1/en/connector-j-usagenotes-connect-drivermanager.html 您可以在drivermanager.getconnection()中使用实际的jdbc连接字符串,您尝试过吗?
这类问题很可能也是mysql服务器与连接器版本不兼容的问题。仔细检查连接器版本。
您的代码片段有点小,您可能希望粘贴得更大方一些。
t5zmwmid2#
我发现了问题所在。我使用了错误版本的jdbc/j连接器。我之前看到的一篇stackeroverflow文章提供了一个将其添加到intellij的解决方案,这篇文章很旧,我没有检查它是否是最新版本。
如果有人想知道如何将它添加到intellij中,请转到项目结构->库->添加(+)->从maven添加…->输入“mysql:mysql-connector-java:8.0.11“->单击“确定”。