Unknown initial character set index '255' received from server.引出的一系列问题攻略
一、这个bug是什么?
Unknown initial character set index ‘255’ received from server.
顾名思义:驱动与数据库字符集不匹配
二、如何解决?
1. 在项目里查看MySQL-connector-java版本
路径:WebContent —> WEB-INF —> lib
2. 查看所安装MySQL是否对应此版本的mysql-connector-java
链接: MySQL对照表官方链接.
以本人项目为例,经过对照发现,系统所安装MySQL版本为8.0,由此推断项目里的mysql-connector-java已经过时,需要下载对应的mysql-connector-java版本。
附:mysql-connector-java-8.0.13.jar
链接:https://pan.baidu.com/s/17JhIIljveVdjub7YaZSRTw
提取码:jshv
3.删除修改原mysql-connector-java配置
1)复制下载好的mysql-connector-java.jar包
2)删除原有老版本mysql-connector-java.jar包
3)导入新版本mysql-connector-java.jar包
直接右键粘贴进WebContent —> WEB-INF —> lib
4)修改项目原有配置
如下图所示,为项目原配置
①修改 第一行 引号 内容
jdbc:mysql://localhost:3306/你需要调用的数据库名?characterEncoding=utf-8&useSSL=true&serverTimezone=GMT
jdbc_url上的时区变为必须配置,否则会启动报错:
Caused by: com.mysql.cj.exceptions.InvalidConnectionAttributeException: The server time zone value ‘�й���ʱ��’ is unrecognized or represents more than one time zone. You must configure either the server or JDBC driver (via the serverTimezone configuration property) to use a more specifc time zone value if you want to utilize time zone support.
②修改 第四行 引号 内容
com.mysql.cj.jdbc.Driver
由于MySQL 8.0 驱动类的改变,com.mysql.jdbc.Driver 需要改为 com.mysql.cj.jdbc.Driver
不修改会影响性能,启动会有警告:
Loading class com.mysql.jdbc.Driver. This is deprecated. The new driver class is com.mysql.cj.jdbc.Driver. The driver is automatically registered via the SPI and manual loading of the driver class is generally unnecessary.
修改后的驱动程序通过SPI自动注册,通常不需要手动加载驱动程序类。
三、测试成功否?
有一定可能还会报一个类似这样的错误:
WARNING: An illegal reflective access operation has occurred
WARNING: Illegal reflective access by org.apache.catalina.loader.WebappClassLoaderBase$1 to method java.lang.ClassLoader.registerAsParallelCapable()
WARNING: Please consider reporting this to the maintainers of org.apache.catalina.loader.WebappClassLoaderBase$1
WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations
WARNING: All illegal access operations will be denied in a future release
这说明jdk版本出问题了,把你古董项目的jdk换一下吧!
右键项目名 —> 构建路径—> 移除原来的jdk—> 添加你已经安装好的jdk
以上仅供参考,如有纰漏,望君指出,祝君调试顺利,好运(●’◡’●)!