各位道友大家好呀,我们又见面啦!
疫情期间大家是否响应了国家的号召,做到了停课不停学呢?
下面我们一起来学习一下吧!
那我们一起来探讨一下作者最近遇到的一些问题吧!
druid.Properties 文件
#JDBC驱动 driverClassName=com.mysql.jdbc.Driver url=jdbc:mysql://127.0.0.1:3306/tableName #数据库登录名称 username=root #数据库登录密码 password=123456 # 初始化连接数量 initialSize=5 # 最大连接数 maxActive=10 # 最大超时时间 maxWait=3000
问题轰炸
拆弹专家 步步为营
字符集的编码问题
错误:Unknown initial
character
set index '255' received from server. Initial client character set can be forced via the 'characterEncoding' property.jdbc:mysql://127.0.0.1:3306/tableName?useUnicode=true&characterEncoding=utf8
参数mysql数据库用的是gbk编码,而项目数据库用的是utf-8编码。这时候如果添加了useUnicode=true&characterEncoding=UTF-8,作用有如下两个方面:
1. 存数据是时
数据库在存放项目数据的时候会先用UTF-8格式将数据解码成字节码,然后再将解码后的字节码重新使用GBK编码存放到数据库中。
2. 取数据时
在从数据库中取数据的时候,数据库会先将数据库中的数据按GBK格式解码成字节码,然后再将解码后的字节码重新按UTF-8格式编码数据,最后再将数据返回给客户端。
数据库驱动jdbc版本问题
错误:Unknown system variable 'tx_isolation'
老版本的MySQL用的是tx_isolation,新版本的MySQL,例如我装的是MySQL 8.0版本的,现在更名为 transaction_isolation,主要问题是无法识别系统变量。
解决:
更换JDBC驱动,更换jar包
驱动:com.mysql.cj.jdbc.Driver
时区问题
错误: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.jdbc:mysql://127.0.0.1:3306/tableName?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT
GMT 是格林尼治标准时间
UTC 协调世界时间
在设定时区的时候,如果设定serverTimezone=UTC
,会比中国时间早8个小时,如果在中国,可以选择Asia/Shanghai
或者Asia/Hongkong
以上是作者在一次实际操作中遇到的一连串按顺序发生的问题,并不只是作者本人一个人遇到了同样的问题,在作者身边也有一些朋友遇到了同样的问题,也找到了我,问题和顺序都是一模一样的出现,当时脑子里就浮现了要写这么一篇解决问题的文章了。
下面是有关于MySQL版本和JDBC驱动的一些问题综述希望对大家能有一些帮助。
MySQL版本问题
错误:Could not create connection to database server.
MySQL 8.0版本需要更换驱动为“com.mysql.cj.jdbc.Driver”,而以前的“com.mysql.jdbc.Driver”MySQL 8.0版本不再使用。详细可查看官方文档.
JDBC驱动问题
com.mysql.jdbc.Driver
是mysql-connector-java 5
以及以下版本使用的;com.mysql.cj.jdbc.Driver
是mysql-connector-java 5
以上版本使用的。
com.mysql.jdbc.Driver 的使用
driverClassName=com.mysql.jdbc.Driver url=jdbc:mysql://localhost:3306/test username=root password=123456
com.mysql.cj.jdbc.Driver 的使用
driverClassName=com.mysql.jdbc.Driver url=jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT username=root password=123456
注意:
- 使用驱动
com.mysql.jdbc.Driver
导入的jar
包要是mysql-connector-java 5
以下(包括5)的才能正常运行;- 同样,使用驱动
com.mysql.cj.jdbc.Driver
导入的jar
包要是mysql-connector-java 5
以上的才能正常运行;- 使用驱动
com.mysql.cj.jdbc.Driver
时需要指定时区`serverTimezone.
以上是作者本期的全部分享,希望对各位同道小伙伴们有所帮助。欢迎讨论区一起探讨一起学习哟!
网友评论