关于SQL Error: 1251 的解决方案
时间:2020-03-26
本文章向大家介绍关于SQL Error: 1251 的解决方案,主要包括关于SQL Error: 1251 的解决方案使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
关于SQL Error: 1251 的解决方案
今天在做项目的时候遇到了SQL Error: 1251 Client does not support authentication protocol requested by server; consider upgrading MySQL client 错误
网页先报了一个Servlet错误
Exception
org.apache.jasper.JasperException: 在 [12] 行处理 [/index.jsp] 时发生异常
9: </head>
10:
11: <body>
12: <jsp:forward page="MessageServlet?method=view"></jsp:forward>
13: </body>
14: </html>
一开始认为是过滤器配置问题,在检查了过滤器并更改了doFilter代码后查看控制台输出
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
if (encoding != null) {
request.setCharacterEncoding(encoding);
response.setContentType("text/html; charset=" + encoding);
System.out.println("过滤器运行中......");
}else {
request.setCharacterEncoding("GBK");
response.setContentType("text/html; charset=GBK");
}
chain.doFilter(request, response);
}
过滤器正在运行
过滤器正在运行
15:49:51,023 WARN JDBCExceptionReporter:71 - SQL Error: 1251, SQLState: 08004
15:49:51,025 ERROR JDBCExceptionReporter:72 - Client does not support authentication protocol requested by server; consider upgrading MySQL client
org.hibernate.exception.JDBCConnectionException: Cannot open connection
at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:74)
at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43)
at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:29)
at org.hibernate.jdbc.ConnectionManager.openConnection(ConnectionManager.java:420)
at org.hibernate.jdbc.ConnectionManager.getConnection(ConnectionManager.java:144)
at org.hibernate.jdbc.JDBCContext.connection(JDBCContext.java:119)
at org.hibernate.transaction.JDBCTransaction.begin(JDBCTransaction.java:57)
at org.hibernate.impl.SessionImpl.beginTransaction(SessionImpl.java:1326)
at com.lyq.dao.MessageDao.findPaging(MessageDao.java:114)
at com.lyq.service.MessageServlet.doPost(MessageServlet.java:75)
at com.lyq.service.MessageServlet.doGet(MessageServlet.java:28)
查询后得知是这个项目的mysql驱动太老了,8.0后mysql的加密方式就使用了sha2转native
- 打开mac的系统偏好设置
- 找到MySql的图标点击Stop MySql Server
- 选择InitalizeDatabase ,这时候我们选择下面的Use Lagacy Password Encryption,换成老的加密方式并填写密码
- 接下来我们重新创建数据库和表数据
- 重新运行,发现控制台出现了 Unknown initial character set index '255' received from server. Initial client character set can be forced via the 'characterEncoding' property.
- 解决思路:根据提示强制更改characterEncoding属性,然后更改数据库连接参数,如下代码
<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<!-- 方言 -->
<property name="dialect">org.hibernate.dialect.MySQLDialect</property>
<!--显示sql语句-->
<property name="hibernate.show_sql">true</property>
<!--格式化sql-->
<property name="hibernate.format_sql">true</property>
<!-- 自动建表 -->
<property name="hbm2ddl.auto">update</property>
<!-- 数据库连接 -->
<property name="connection.url">jdbc:mysql://localhost:3306/db_database16?characterEncoding=gbk</property>
<!-- 数据库连接用户名 -->
<property name="connection.username">root</property>
<!-- 数据库连接密码 -->
<property name="connection.password">Cc105481</property>
<!-- 数据库驱动 -->
<property name="connection.driver_class">com.mysql.jdbc.Driver</property>
<!-- 映射文件 -->
<mapping resource="com/lyq/model/Message.hbm.xml"/>
<mapping resource="com/lyq/model/Revert.hbm.xml"/>
<mapping resource="com/lyq/model/User.hbm.xml"/>
</session-factory>
</hibernate-configuration>
至此跑通了这个servlet项目.
原文地址:https://www.cnblogs.com/MrKeen/p/12575325.html
- MySQL 教程
- MySQL 安装
- MySQL 管理与配置
- MySQL PHP 语法
- MySQL 连接
- MySQL 创建数据库
- MySQL 删除数据库
- MySQL 选择数据库
- MySQL 数据类型
- MySQL 创建数据表
- MySQL 删除数据表
- MySQL 插入数据
- MySQL 查询数据
- MySQL where 子句
- MySQL UPDATE 查询
- MySQL DELETE 语句
- MySQL LIKE 子句
- mysql order by
- Mysql Join的使用
- MySQL NULL 值处理
- MySQL 正则表达式
- MySQL 事务
- MySQL ALTER命令
- MySQL 索引
- MySQL 临时表
- MySQL 复制表
- 查看MySQL 元数据
- MySQL 序列 AUTO_INCREMENT
- MySQL 处理重复数据
- MySQL 及 SQL 注入
- MySQL 导出数据
- MySQL 导入数据
- MYSQL 函数大全
- MySQL Group By 实例讲解
- MySQL Max()函数实例讲解
- mysql count函数实例
- MYSQL UNION和UNION ALL实例
- MySQL IN 用法
- MySQL between and 实例讲解
- JAR项目部署
- java基础:枚举(你木有见过的船新版本)
- elasticSearch学习(九)
- Linux工具---iptraf 实时地监视网卡流量
- Linux工具---ipcalc简单的IP地址计算器
- 七、玩转Git三剑客-使用GitHub进行团队协作
- 关于mysql的join
- 微信公众号接入智能聊天机器人
- SAP UI5 Diagnostics工具里一个使用面向切片编程(AOP)的一个例子
- SAP CDS view自学教程之九:cube view和query view的实现原理
- 一点多发FTP客户端设计
- VS2017中使用CppSQLite报出编译器错误C2440
- Windows 必知命令
- MATLAB批量读取一个文件夹下的图片
- python next()迭代器完成会引发StopIteration异常