相信报错信息:com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException:Could not create connection to database server

最近在做环境部署时,因为mysql5.0一直安装失败;

所以直接升级mysql 8.0,一步到位;然而后续出现一些问题,服务启动一直失败,报以上错误,

搜索了一下,说是mysql驱动jar报不匹配导致

因为之前一直使用的时mysql-connector-java-5.1.37.jar(我们使用的是lib包)

pom应该是用的这个:

<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>5.1.37</version>
</dependency>

所以我们去网上下载一个8.0的jar包;

多说一句:网上那些把包做成要钱的,是真的够了

从以上路径免费下载

Maven Repository: mysql » mysql-connector-java » 5.1.37 (mvnrepository.com)

8.0版本pom

<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>8.0.29</version>
</dependency>

下载完成后,删除旧jar包,把新包放在旧包位置,这不用教吧,注意,如果存在两个jar包,也会报错,jar包冲突;

最后修改config.properties(数据库配置文件)driver:......

jdbc.driver=com.mysql.jc.jdbc.Driver
jdbc.url=jdbc:mysql://192.168.91.100:3306/ssm?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true
jdbc.username=root
jdbc.password=000000

最后启动服务成功;

另为避免重复启动服务,步骤繁多,可使用原生jdbc操作连接,代码如下

package com.cn.test;


import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.PreparedStatement;

import java.sql.ResultSet;

import java.sql.SQLException;


/**
 * <p>单独的jdbc程序</p>
 *
 * @author woniu
 * @version 1.0
 * @date 2015-06-10
 */

public class JdbcTest {


    public static void main(String[] args) {


        Connection connection = null;//连接

        PreparedStatement ps = null;//预编译的statement

        ResultSet rs = null;//结果集


        try {

            //1、注册驱动

            Class.forName("com.mysql.jc.jdbc.Driver");

            //2、通过驱动管理类获取数据库的连接

            connection = DriverManager.getConnection("jdbc:mysql://152.136.237.100:3306/ssm?characterEncoding=utf-8", "root", "000000");

            //3、建立sql语句,向数据库发起要求;获取预处理的statement

            String sql = "select * from accounts where aid = ? ";

            ps = connection.prepareStatement(sql);

            ps.setString(1, "1");

            //4、获取结果集

            rs = ps.executeQuery();

            //5、处理结果集

            while (rs.next()) {

                System.out.println(rs.getString("number") + " " + rs.getString("balance"));

            }

        } catch (ClassNotFoundException e) {

            e.printStackTrace();

        } catch (SQLException e) {

            e.printStackTrace();

        } finally {

            //6、释放资源

            if (rs != null) {

                try {

                    rs.close();

                } catch (SQLException e) {

                    e.printStackTrace();

                }

            }

            if (ps != null) {

                try {

                    ps.close();

                } catch (SQLException e) {

                    e.printStackTrace();

                }

            }

            if (connection != null) {

                try {

                    connection.close();

                } catch (SQLException e) {

                    e.printStackTrace();

                }

            }

        }


    }

}

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐