在配置spring的数据源时遇到的奇葩错误

以下错误均出现在eclipse使用spring+hibernate访问MySQL数据库的时候。
eclipse版本:Version: Neon Release (4.6.0)
spring版本:4.3.0
hibernate版本:5.2.0
MySQL版本:5.7.13
MySQL驱动版本:5.1.39
spring配置文件名:applicationContext.xml。


<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"
    destroy-method="close"
    p:driverClass="com.mysql.jdbc.Driver"
    p:jdbcUrl="jdbc:mysql://localhost:3306/ShuziYingxin?useUnicode=true&characterEncoding=utf-8&useSSL=false"
    p:user="root"
    p:password="1234"
    p:maxPoolSize="40"
    p:minPoolSize="2"
    p:initialPoolSize="2"
    p:maxIdleTime="30" />

错误一:

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.

解决方案

p:jdbcUrl="jdbc:mysql://localhost:3306/ShuziYingxin"

将上面这句换成下面的

p:jdbcUrl="jdbc:mysql://localhost:3306/ShuziYingxin?useUnicode=true&characterEncoding=utf-8&useSSL=false"

此时错误一将不出意外的消失,但是此时错误二应运而生。

错误二

对实体 "characterEncoding" 的引用必须以 ';' 分隔符结尾。

解决方案

p:jdbcUrl="jdbc:mysql://localhost:3306/ShuziYingxin"

将这句再改成下面这样的

p:jdbcUrl="jdbc:mysql://localhost:3306/ShuziYingxin?useUnicode=true;characterEncoding=utf-8;useSSL=false"

与错误一的解决方案比,就是讲‘&’符号改成了‘;’。
错误二销声匿迹,错误三粉墨登场。

错误三

The connection property 'useUnicode' only accepts values of the form: 'true', 'false', 'yes' or 'no'....

解决方案

p:jdbcUrl="jdbc:mysql://localhost:3306/ShuziYingxin"

把这句话再改一下

p:jdbcUrl="jdbc:mysql://localhost:3306/ShuziYingxin?useUnicode=true&characterEncoding=utf-8&useSSL=false"

就是既不能用‘&’也不能用‘;’而是要使用‘&’。虽然& 本身表示‘&’符号,但是必须这么写才可以,否则解析xml文件时就无法解析。

你可能感兴趣的:(Java)