從昨天晚上開始,困擾了我幾個小時的問題,無論用c3p0還是用spring的DriverManagerDataSource都無法連接我服務器上的遠程數據庫,一直報的錯誤就是:
org.springframework.jdbc.CannotGetJdbcConnectionException: Could not get JDBC Connection; nested exception is com.MySQL.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown character set: 'utf8mb4'
at org.springframework.jdbc.datasource.DataSourceUtils.getConnection(DataSourceUtils.Java:80)
at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:382)
at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:456)
at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:464)
at org.springframework.jdbc.core.JdbcTemplate.queryForObject(JdbcTemplate.java:472)
at org.springframework.jdbc.core.JdbcTemplate.queryForObject(JdbcTemplate.java:477)
at org.springframework.jdbc.core.JdbcTemplate.queryForInt(JdbcTemplate.java:486)
..........................
我的配置裏寫得很明白:jdbc:mysql://xx.xx.xx.xx:3306/flash_fee?useUnicode=true&characterEncoding=utf8
就是使用utf8字符集進行連接,不知道爲什麼在連接的時候非要在後面加上mb4,也不知道這東西是啥。
這個問題今天上午終於解決,是由於Mysql驅動版本引起的:
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.18</version>
</dependency>
改爲:
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.6</version>
</dependency>
不清楚這個Mysql的驅動爲什麼版本太新了還不可以。去查看了一下服務器的Mysql版本:
Server version: 6.0.11-alpha-log Source distribution
不知道我們的服務器維護人員怎麼想的,竟然裝了這麼奇葩的一個Mysql版本,還是個alpha的。。。真是蛋疼了!
看來度娘還是不行啊,要找技術東西還是得谷谷哥啊!
注:如果上述方法不可行,則更換mysql數據庫版本mysql-5.5.*.msi