当前位置:   article > 正文

Java JDBC连接MySql数据库报错:Could not create connection to database server._could not create connection to database server. at

could not create connection to database server. at sun.reflect.nativeconstr

错误信息:

  1. com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Could not create connection to database server.
  2. at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
  3. at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
  4. at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
  5. at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
  6. at com.mysql.jdbc.Util.handleNewInstance(Util.java:377)
  7. at com.mysql.jdbc.Util.getInstance(Util.java:360)
  8. at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:956)
  9. at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:935)
  10. at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:924)
  11. at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:870)
  12. at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2311)
  13. at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2064)
  14. at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:790)
  15. at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:44)
  16. at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
  17. at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
  18. at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
  19. at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
  20. at com.mysql.jdbc.Util.handleNewInstance(Util.java:377)
  21. at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:395)
  22. at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:325)
  23. at java.sql.DriverManager.getConnection(DriverManager.java:664)
  24. at java.sql.DriverManager.getConnection(DriverManager.java:247)
  25. at com.test.MySQLDemo.main(MySQLDemo.java:29)

测试代码:

  1. package com.test;
  2. import java.sql.*;
  3. public class MySQLDemo {
  4. // MySQL 8.0 以下版本 - JDBC 驱动名及数据库 URL
  5. // static final String JDBC_DRIVER = "com.mysql.jdbc.Driver";
  6. // static final String DB_URL = "jdbc:mysql://localhost:3306/zhanghz";
  7. // MySQL 8.0 以上版本 - JDBC 驱动名及数据库 URL
  8. static final String JDBC_DRIVER = "com.mysql.jdbc.Driver";
  9. static final String DB_URL = "jdbc:mysql://localhost:3306/zhanghz?useSSL=false&serverTimezone=UTC";
  10. // 数据库的用户名与密码,需要根据的设置
  11. static final String USER = "root";
  12. static final String PASS = "123456";
  13. public static void main(String[] args) {
  14. Connection conn = null;
  15. Statement stmt = null;
  16. // 注册 JDBC 启动
  17. try {
  18. Class.forName(JDBC_DRIVER);
  19. // 打开链接
  20. System.out.println("连接数据库...");
  21. conn = DriverManager.getConnection(DB_URL,USER,PASS);
  22. // 执行查询
  23. System.out.println("实例化Statement对象...");
  24. stmt = conn.createStatement();
  25. String sql;
  26. sql = "SELECT id, name, url FROM websites";
  27. ResultSet rs = stmt.executeQuery(sql);
  28. // 展开结果集数据库
  29. while(rs.next()){
  30. // 通过字段检索
  31. int id = rs.getInt("id");
  32. String name = rs.getString("name");
  33. String url = rs.getString("url");
  34. //输出数据
  35. System.out.print("ID:" + id);
  36. System.out.print(",站点名称:" + name);
  37. System.out.print(",站点URL:" + url);
  38. System.out.print("\n");
  39. }
  40. // 完成后关闭
  41. rs.close();
  42. stmt.close();
  43. conn.close();
  44. } catch (SQLException e) {
  45. // 处理 JDBC 错误
  46. e.printStackTrace();
  47. } catch (Exception e) {
  48. // 处理 Class.forName 错误
  49. e.printStackTrace();
  50. } finally {
  51. // 关闭资源
  52. try {
  53. if(stmt != null) conn.close();
  54. } catch (SQLException e2) {
  55. // 什么都不做
  56. }
  57. try {
  58. if(conn != null) conn.close();
  59. } catch (SQLException se) {
  60. se.printStackTrace();
  61. }
  62. }
  63. System.out.println("Goodbye!");
  64. }
  65. }

数据库信息:

pom.xml配置:

  1. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  2. <modelVersion>4.0.0</modelVersion>
  3. <groupId>com.zhanghz</groupId>
  4. <artifactId>connectdatabase</artifactId>
  5. <version>0.0.1-SNAPSHOT</version>
  6. <dependencies>
  7. <dependency>
  8. <groupId>mysql</groupId>
  9. <artifactId>mysql-connector-java</artifactId>
  10. <version>5.1.34</version>
  11. </dependency>
  12. </dependencies>
  13. </project>

解决办法和分析:

因为本地的MySQL数据库是8.0以上的版本,而Java引用的驱动jar包版本为5.1.34,导致出现上面的报错:Could not create connection to database server.

把Java引用的驱动器jar包版本改为8.0以上的就不会再出现上面的问题。

文档的解决方法仅供参考,具体的问题具体分析。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/知新_RL/article/detail/527077
推荐阅读
相关标签
  

闽ICP备14008679号