背景介绍
目前在做springboot配置双数据源的demo,在启动过程中就报了这个错误,目前配置如下:
## test1 database
spring.datasource.test1.url=jdbc:mysql://localhost:3306/aipc-sit?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC&useSSL=false
spring.datasource.test1.username=root
spring.datasource.test1.password=123456
spring.datasource.test1.driverClassName=com.mysql.jdbc.Driver
## test2 database
spring.datasource.test2.url=jdbc:mysql://localhost:3306/aipc-uat?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC&useSSL=false
spring.datasource.test2.username=root
spring.datasource.test2.password=123456
spring.datasource.test2.driverClassName=com.mysql.jdbc.Driver
问题原因
因为demo项目是使用的springboot2.X,而数据源的配置方式使用的是springboot1.X的配置方式,所以识别不了报错。
springboot1.X | springboot2.x | |
---|---|---|
数据库链接 | url | jdbc-url |
驱动名称 | driverClassName | driver-class-name |
所以正确的配置如下:
## test1 database
spring.datasource.test1.jdbc-url=jdbc:mysql://localhost:3306/aipc-sit?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC&useSSL=false
spring.datasource.test1.username=root
spring.datasource.test1.password=123456
spring.datasource.test1.driver-class-name=com.mysql.jdbc.Driver
## test2 database
spring.datasource.test2.jdbc-url=jdbc:mysql://localhost:3306/aipc-uat?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC&useSSL=false
spring.datasource.test2.username=root
spring.datasource.test2.password=123456
spring.datasource.test2.driver-class-name=com.mysql.jdbc.Driver
拓展补充
** com.mysql.cj.jdbc.Driver和com.mysql.jdbc.Driver 的区别 **
- MySQL5用的驱动url是com.mysql.jdbc.Driver,MySQL6以后用com.mysql.cj.jdbc.Driver。版本不匹配便会报驱动类已过时的错误
- JDBC连接MySQL6 (com.mysql.cj.jdbc.Driver), 需要指定时区serverTimezone
jdbc:mysql://localhost:3306/aipc-sit?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC&useSSL=false