我们连接本地mysql数据库的时候,通常是这样写的: jdbc:mysql://localhost:3306/数据库名,当然为了防止乱码 可以在数据库名后面加个 : ?characterEncoding=utf8。其实除了可以加个这个之外,还有很多东西可以加(根据自己的需求来)!
jdbc:mysql://localhost:3306/数据库名?useUnicode=true&characterEncoding=utf8&useSSL=false&autoReconnect=true&serverTimezone=UTC 上面的这些都是可以加的,当然有的你可能不需要加!!!我这里的话主要是介绍一下每个属性的含义(主要是方便自己可以随和查阅,有什么不足,欢迎留言!) 1.?characterEncoding=utf8:这个我相信大家都用到过,非常的熟悉,它主要配置的是mysql服务端的编码,mysql驱动的代码中,会将要发送mysql服务端的sql使用characterEncoding指定的值进行转码,然后将转码后的字节发送到mysql服务端。简单来说,就是为了避免乱码!
2.?useUnicode=true :它后面必须配置 characterEncoding配置才能生效,要一起使用!它主要配置的客户端发送数据到服务端时候,需要转换成什么样的编码发送给服务端。
3.?useSSL=false:这个就是个协议。MySQL在高版本需要指明是否进行SSL连接,如果你报了以下错误: Establishing SSL connection without server’s identity verification is not recommended. According to MySQL 5.5.45+, 5.6.26+ and 5.7.6+ requirements SSL connection must be established by default if explicit option isn’t set. For compliance with existing applications not using SSL the verifyServerCertificate property is set to ‘false’. You need either to explicitly disable SSL by setting useSSL=false, or set useSSL=true and provide truststore for server certificate verification. 那你就可以配置一下这个SSL了,在mysql连接字符串url中加入userSSL=true或者false即可。
4.?autoReconnect=true:它主要是解决8小时连接失效的问题,如果连接闲置8小时 (8小时内没有进行数据库操作), mysql就会自动断开连接, 要重启tomcat. 在创建Mysql时url中加入了autoReconnect=true参数,一但这个连接两次访问数据库的时间超出了服务器端wait_timeout的时间限制,还是会CommunicationsException
5.?serverTimezone=UTC:首先,介绍一下什么是UTC,UTC,简称世界统一时间,跟北京时间相比,比北京早8个小时,也就是说,北京2020年7月2日18点的时候,UTC时间为2020年7月2日10点。 当你遇到如下错误时: 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
你就可以配这个属性了,如果定义了serverTimezone=UTC,那么在你编译器上执行的SQL语句,会先以UTC时区进行存储,发送到MySQL,然后MySQL以本地时区进行转换,就会导致,执行时间比从编译器上的执行时间早8个小时,导致,同一段SQL语句,在mysql直接执行,与编译器执行,结果不同,因为时间相差8个小时。(具体怎么解决这个问题,就要另请高明了,我这里这是简单的介绍一下!!!)
注意:以上介绍,你不一定全都要加上,前两个应该是可以加的,其他的话,就需要根据自己需求来了(欢迎留言评论!)