目前碰到数据库连接常见问题

使用mysql8.0及以上:
注册驱动:

Class.forName("com.mysql.cj.jdbc.Driver");

问题1
Establishing SSL connection without server’s identity verification is not recommended(建议在没有服务器身份验证的情况下建立SSL连接。根据MySQL 5.5.45+、5.6.26+和5.7.6+的要求,如果不设置显式选项,则必须建立默认的SSL连接。您需要通过设置useSSL=false显式地禁用SSL,或者设置useSSL=true并为服务器证书验证提供信任存储)

解决
修改jdbc连接驱动,将所跟信息写全:

jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=utf-8&useSSL=false

问题2:

Could not create connection to database server. Attempted reconnect 3 times. Giving up.

出现这个超时问题,可能是数据库连接配置出问题;也有可能是jdbc驱动jar包版本的问题(我就是后者)

解决
如果是配置问题修改对应配置即可;如果修改对应配置信息还不行考虑换一个版本的驱动jar包,跟mysql版本差不多即可。

问题3

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.

解决
给数据库连接url设置一个serverTimezone的参数,值可以是GMT-8,也可以是Asia/Shanghai,因为GMT-8需要转义一下连字符"-",所以配置属性为serverTimezone=GMT-8,如果是Asia/Shanghai就无须做转换了。

问题4
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. Exception in thread "main" java.sql.SQLException: Unknown system variable 'query_cache_size' at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:964)
解决
这个是因为数据库版本驱动的问题,mysql8.0以上的版本用:

<dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>8.0.11</version>
      </dependency>

如果是在执行mybatis逆向工程报错的话:
直接使用下面的依赖;然后对应驱动直接写:com.mysql.jdbc.Driver

<dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.8</version>
   </dependency>

总之建议如果使用mysql8以上,对于获取连接的Url统一写成:

jdbc:mysql://localhost:3306/chain?useUnicode=UTF-8&characterEncoding=utf-8&serverTimezone=UTC

主要是后面几个参数配置影响连接:

useUnicode=UTF-8&characterEncoding=utf-8&serverTimezone=UTC
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值