解决mysql时区问题以及SSL问题

mysql参数url的值需要这样设置:

jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=Asia/Shanghai&useSSL=false

参数解释:

1、useUnicode
是否使用Unicode字符集,如果参数characterEncoding设置为gb2312或gbk,本参数值必须设置为true

2、characterEncoding
当useUnicode设置为true时,需要指定字符编码,比如可设置为gbk或者UTF-8

3、useJDBCCompliantTimezoneShift
中文含义是使用JDBC符合时区转换,但是根据4中的说法,我们不应该开启时区转换,不过好多地方都是设置的true,所以暂且搁置

4、useLegacyDatetimeCode
useLegacyDatetimeCode这个参数是一个开关参数,默认为true,但是当其设置为false时,useTimezone、useJDBCCompliantTimezoneShif、useGmtMillisForDatetimes、useFastDateParsing这几个参数都会变的无效化,其中useTimeZone(主要用于web服务器和数据库部署在不同时区时,开启服务器和客户端之间的时区转换,例如web服务器部署在北京(GMT+8),数据库部署在美国加州(GMT-8)。现在web服务器有一条记录的创建时间是所在当地时区时间22:00,那存储到数据库的时间却是数据库所在当地时区时间06:00。然后web服务器通过jdbc读取到这条记录后,读取到的创建时间应该仍旧是以当地时区为标准的22:00,而不是数据库所在失去的时间6:00,所以不能开启服务器和客户端之间的时区转换,因此需要让useTimeZone变得无效化)

5、serverTimezone
设置服务器端的时区,可以选择北京时间东八区——》GMT%2B8(其中GMT是格林威治时间,即世界时,%2B是+的意思,这是转义写法,不这样写会出错,GMT%2B8代表比世界时早8个小时,那代表北京时间) 或者 上海时间——》Asia/Shanghai,这样不会出现MySql数据库插入和读取的时间不正确的问题

6、useSSL
SSL协议提供服务的主要作用:
1)认证用户服务器,确保数据发送到正确的服务器;    .
2)加密数据,防止数据传输途中被窃取使用;
3)维护数据完整性,验证数据在传输过程中是否丢失;
结论:自己测试可以使用useSSL=false关闭SSL,生产环境需要开启SSL

注意:在xml配置文件中,url中的&符号需要转义成&,例如上面的就变成了

jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=Asia/Hongkong&useSSL=false

推荐网址:http://www.voidcn.com/article/p-eqvuhiio-bsb.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值