eclipse连接mysql8.0的一些错误总结

弄这个mysql弄得简直没脾气,总结一下遇到的错误吧
首先要把mysql-connector-java-5.1.7-bin-jar加进去,当然别的版本也行吧右键项目–BuildPath–configur那个–Libraries–Add Exteral JARS
这里写图片描述
填进来大概是这个,哦,要配置环境变量,这些都弄好了之后我开始写代码连接

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class Conn {
    Connection con;
    public Connection getConnection(){
        try{
            Class.forName("com.mysql.jdbc.Driver");
            System.out.println("数据库加载驱动成功");
        }catch(ClassNotFoundException e){
            e.printStackTrace();
        }
        try{
            con=DriverManager.getConnection("jdbc:mysql:"+"//127.0.0.1:3306/test","root","123456");
            System.out.println("数据库连接成功");
        }catch(SQLException e){
            e.printStackTrace();
        }
        return con;
    }

    /**
     * @param args
     */
    public static void main(String[] args) {
        Conn c=new Conn();
        c.getConnection();
        // TODO Auto-generated method stub

    }

}

正当我天真的以为完事了呢,结果出现了一个错误:
com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Client does not support authentication protocol requested by server; consider upgrading MySQL client
解决办法:
mysql8.0是加强密码的,所以参考这篇文章重装mysql把用强密码改成用旧的方式(大概这个意思)参考:https://www.jb51.net/article/139923.htm
然后再次运行代码出现了有一个错误:Access denied for user ‘root’@’localhost’ (using password: YES)
哇,这个真是弄了好久好久,又去百度查资料,看了好多,也试了很多方法,最后查到了这篇,改密码吧:
https://blog.csdn.net/jack__love/article/details/79019049(下面的评论也有用,我遇到了问题然后看了下面的评论解决的)
这篇里面用的是win7 mysql是5.6 而我用的是win10 mysql是8.0,所以第一步就有问题了,我这里面找不到my.ini文件。
怎么办,继续找解决办法呗,写一下解决办法 :https://blog.csdn.net/wm3tcw28/article/details/78942693
这篇博客,但是还有一个问题就是win10不能在C盘里面改那个文件,怎么办?my.ini 文件复制到别的盘例如D盘,然后改,之后用管理员权限把C盘里面的my.ini文件删了,把改好的复制过去。
按照那篇文章改过之后密码就变成123456了这个要记得在代码里面改。
其实这时候已经过去好久了,很难受,所以后来写代码的时候有字母写错了,这里要说一下,一定要认真,字母写错了又找了好久错误,真是不值!!

这个错误解决之后,出现了一下一个错误:
com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown database ‘test’
字面意思就是说不知道数据库“text”,然后在cmd里面启动mysql然后进入数据库后创建一个“test”

create database test;

之后出现了这个错误:
Unknown initial character set index ‘255’ received from server. Initial clie。。。。
后边没记下来,这个的解决方法就是在jdbc:mysql://127.0.0.1:3306/test后面加上 ?useUnicode=true&characterEncoding=utf8
也就是最后的连接代码是这样的

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class Conn {
    Connection con;
    public Connection getConnection(){
        try{
            Class.forName("com.mysql.jdbc.Driver");
            System.out.println("数据库加载驱动成功");
        }catch(ClassNotFoundException e){
            e.printStackTrace();
        }
        try{
            con=DriverManager.getConnection("jdbc:mysql:"+"//127.0.0.1:3306/test?useUnicode=true&characterEncoding=UTF-8","root","123456");
            System.out.println("数据库连接成功");
        }catch(SQLException e){
            e.printStackTrace();
        }
        return con;
    }

    /**
     * @param args
     */
    public static void main(String[] args) {
        Conn c=new Conn();
        c.getConnection();
        // TODO Auto-generated method stub

    }

}

这里写图片描述
终于成功了,虽然过程真的很难受,但是当看到连接成功的时候真的是特别开心,很有成就感(毕竟是菜鸟,这样就很有成就感了 哈哈哈),总结一下,就是遇到问题百度,谷歌查资料呗,但是应该很少有和你一模一样的,所以还要结合自己的问题,分析一下,最后解决问题。

  • 14
    点赞
  • 50
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值