maven搭建ssm框架是使用最新mysql 6.0jar遇到的问题

作者:blouc@qq.com本文为作者原创,转载请注明出处:https://www.cnblogs.com/oucbl/p/5940556.html

今天学习SSM框架整合,完成Spring和mybatis这两大框架的整合做测试时候出来很多问题,主要来自于配置文件。

我这里重点说一下Mysql数据驱动配置。

配置pom.xml时候去网站MySQL Connector/J找到了最新版本,也是出于好奇就配置了…

<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java --><dependency>    <groupId>mysql</groupId>    <artifactId>mysql-connector-java</artifactId>    <version>6.0.4</version></dependency>

解决问题原来新版的驱动配置有些变化:1. url连接必须设置时区

### MySQL Connector/J 5.x   (旧版连接)#jdbc.url=jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=utf8### MySQL Connector/J 6.x   (新版连接)jdbc.url=jdbc:mysql:///test?serverTimezone=UTC&characterEncoding=utf8&useUnicode=true&useSSL=false

说明:新版驱动url默认地址为127.0.0.1:3306,所以访问本机mysql数据库地址可以用///表示。

2. 的驱动类位置有了变化(不影响使用,但会报警告)

### MySQL Connector/J 5.x   (旧版驱动)#jdbc.driver_class=com.mysql.jdbc.Driver### MySQL Connector/J 6.x   (新版驱动)jdbc.driver_class=com.mysql.cj.jdbc.Driver

异常查看

[INFO] Initializing c3p0 pool… com.mchange.v2.c3p0.ComboPooledDataSource [ acquireIncrement -> 3, acquireRetryAttempts -> 30, acquireRetryDelay -> 1000, autoCommitOnClose -> false, automaticTestTable -> null, breakAfterAcquireFailure -> false, checkoutTimeout -> 0, connectionCustomizerClassName -> null, connectionTesterClassName -> com.mchange.v2.c3p0.impl.DefaultConnectionTester, contextClassLoaderSource -> caller, dataSourceName -> 1hgev419te1s9xe1nd08ye|1a79131, debugUnreturnedConnectionStackTraces -> false, description -> null, driverClass -> com.mysql.jdbc.Driver, extensions -> {}, factoryClassLocation -> null, forceIgnoreUnresolvedTransactions -> false, forceSynchronousCheckins -> false, forceUseNamedDriverClass -> false, identityToken -> 1hgev419te1s9xe1nd08ye|1a79131, idleConnectionTestPeriod -> 0, initialPoolSize -> 3, jdbcUrl -> jdbc:mysql://localhost:3306/ssm?useSSL=false, maxAdministrativeTaskTime -> 0, maxConnectionAge -> 0, maxIdleTime -> 0, maxIdleTimeExcessConnections -> 0, maxPoolSize -> 15, maxStatements -> 0, maxStatementsPerConnection -> 0, minPoolSize -> 3, numHelperThreads -> 3, preferredTestQuery -> null, privilegeSpawnedThreads -> false, properties -> {user=******, password=******}, propertyCycle -> 0, statementCacheNumDeferredCloseThreads -> 0, testConnectionOnCheckin -> false, testConnectionOnCheckout -> false, unreturnedConnectionTimeout -> 0, userOverrides -> {}, usesTraditionalReflectiveProxies -> false ]Loading class `com.mysql.jdbc.Driver’. This is deprecated. The new driver class is `com.mysql.cj.jdbc.Driver’. The driver is automatically registered via the SPI and manual loading of the driver class is generally unnecessary.[WARNING] com.mchange.v2.resourcepool.BasicResourcePool$ScatteredAcquireTask@1eb28fe — Acquisition Attempt Failed!!! Clearing pending acquires. While trying to acquire a needed new resource, we failed to succeed more than the maximum number of allowed acquisition attempts (30). Last acquisition attempt exception: java.sql.SQLException: 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.at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:545)at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:513)at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:505)at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:479)at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:489)at com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:69)at com.mysql.cj.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:1606)at com.mysql.cj.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:633)at com.mysql.cj.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:347)at com.mysql.cj.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:219)at com.mchange.v2.c3p0.DriverManagerDataSource.getConnection(DriverManagerDataSource.java:175)at com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:220)at com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:206)at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool$1PooledConnectionResourcePoolManager.acquireResource(C3P0PooledConnectionPool.java:203)at com.mchange.v2.resourcepool.BasicResourcePool.doAcquire(BasicResourcePool.java:1138)at com.mchange.v2.resourcepool.BasicResourcePool.doAcquireAndDecrementPendingAcquiresWithinLockOnSuccess(BasicResourcePool.java:1125)at com.mchange.v2.resourcepool.BasicResourcePool.access$700(BasicResourcePool.java:44)at com.mchange.v2.resourcepool.BasicResourcePool$ScatteredAcquireTask.run(BasicResourcePool.java:1870)at com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:696)Caused by: com.mysql.cj.core.exceptions.InvalidConnectionAttributeException: 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.at sun.reflect.GeneratedConstructorAccessor28.newInstance(Unknown Source)at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)at java.lang.reflect.Constructor.newInstance(Constructor.java:423)at com.mysql.cj.core.exceptions.ExceptionFactory.createException(ExceptionFactory.java:54)at com.mysql.cj.core.exceptions.ExceptionFactory.createException(ExceptionFactory.java:73)at com.mysql.cj.jdbc.util.TimeUtil.getCanonicalTimezone(TimeUtil.java:118)at com.mysql.cj.mysqla.MysqlaSession.configureTimezone(MysqlaSession.java:293)at com.mysql.cj.jdbc.ConnectionImpl.initializePropsFromServer(ConnectionImpl.java:2399)at com.mysql.cj.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:1739)at com.mysql.cj.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:1596)… 12 more[WARNING] Having failed to acquire a resource, com.mchange.v2.resourcepool.BasicResourcePool@1e877aa is interrupting all Threads waiting on a resource to check out. Will try again in response to new client requests.一月 26, 2018 9:23:48 下午 org.apache.catalina.core.StandardWrapperValve invoke严重: Servlet.service() for servlet [springmvc] in context with path [/maven_ssm_01] threw exception [Request processing failed; nested exception is org.springframework.transaction.CannotCreateTransactionException: Could not open JDBC Connection for transaction; nested exception is java.sql.SQLException: Connections could not be acquired from the underlying database!] with root causecom.mysql.cj.core.exceptions.InvalidConnectionAttributeException: 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.at sun.reflect.GeneratedConstructorAccessor28.newInstance(Unknown Source)at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)at java.lang.reflect.Constructor.newInstance(Constructor.java:423)at com.mysql.cj.core.exceptions.ExceptionFactory.createException(ExceptionFactory.java:54)at com.mysql.cj.core.exceptions.ExceptionFactory.createException(ExceptionFactory.java:73)at com.mysql.cj.jdbc.util.TimeUtil.getCanonicalTimezone(TimeUtil.java:118)at com.mysql.cj.mysqla.MysqlaSession.configureTimezone(MysqlaSession.java:293)at com.mysql.cj.jdbc.ConnectionImpl.initializePropsFromServer(ConnectionImpl.java:2399)at com.mysql.cj.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:1739)at com.mysql.cj.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:1596)at com.mysql.cj.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:633)at com.mysql.cj.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:347)at com.mysql.cj.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:219)at com.mchange.v2.c3p0.DriverManagerDataSource.getConnection(DriverManagerDataSource.java:175)at com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:220)at com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:206)at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool$1PooledConnectionResourcePoolManager.acquireResource(C3P0PooledConnectionPool.java:203)at com.mchange.v2.resourcepool.BasicResourcePool.doAcquire(BasicResourcePool.java:1138)at com.mchange.v2.resourcepool.BasicResourcePool.doAcquireAndDecrementPendingAcquiresWithinLockOnSuccess(BasicResourcePool.java:1125)at com.mchange.v2.resourcepool.BasicResourcePool.access$700(BasicResourcePool.java:44)at com.mchange.v2.resourcepool.BasicResourcePool$ScatteredAcquireTask.run(BasicResourcePool.java:1870)at com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:696)

[WARNING] com.mchange.v2.resourcepool.BasicResourcePool$ScatteredAcquireTask@1f869cf — Acquisition Attempt Failed!!! Clearing pending acquires. While trying to acquire a needed new resource, we failed to succeed more than the maximum number of allowed acquisition attempts (30). Last acquisition attempt exception: java.sql.SQLException: 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.at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:545)at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:513)at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:505)at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:479)at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:489)at com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:69)at com.mysql.cj.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:1606)at com.mysql.cj.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:633)at com.mysql.cj.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:347)at com.mysql.cj.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:219)at com.mchange.v2.c3p0.DriverManagerDataSource.getConnection(DriverManagerDataSource.java:175)at com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:220)at com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:206)at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool$1PooledConnectionResourcePoolManager.acquireResource(C3P0PooledConnectionPool.java:203)at com.mchange.v2.resourcepool.BasicResourcePool.doAcquire(BasicResourcePool.java:1138)at com.mchange.v2.resourcepool.BasicResourcePool.doAcquireAndDecrementPendingAcquiresWithinLockOnSuccess(BasicResourcePool.java:1125)at com.mchange.v2.resourcepool.BasicResourcePool.access$700(BasicResourcePool.java:44)at com.mchange.v2.resourcepool.BasicResourcePool$ScatteredAcquireTask.run(BasicResourcePool.java:1870)at com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:696)Caused by: com.mysql.cj.core.exceptions.InvalidConnectionAttributeException: 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.at sun.reflect.GeneratedConstructorAccessor28.newInstance(Unknown Source)at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)at java.lang.reflect.Constructor.newInstance(Constructor.java:423)at com.mysql.cj.core.exceptions.ExceptionFactory.createException(ExceptionFactory.java:54)at com.mysql.cj.core.exceptions.ExceptionFactory.createException(ExceptionFactory.java:73)at com.mysql.cj.jdbc.util.TimeUtil.getCanonicalTimezone(TimeUtil.java:118)at com.mysql.cj.mysqla.MysqlaSession.configureTimezone(MysqlaSession.java:293)at com.mysql.cj.jdbc.ConnectionImpl.initializePropsFromServer(ConnectionImpl.java:2399)at com.mysql.cj.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:1739)at com.mysql.cj.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:1596)… 12 more[WARNING] Having failed to acquire a resource, com.mchange.v2.resourcepool.BasicResourcePool@1e877aa is interrupting all Threads waiting on a resource to check out. Will try again in response to new client requests.[WARNING] com.mchange.v2.resourcepool.BasicResourcePool$ScatteredAcquireTask@1dd8d61 — Acquisition Attempt Failed!!! Clearing pending acquires. While trying to acquire a needed new resource, we failed to succeed more than the maximum number of allowed acquisition attempts (30). Last acquisition attempt exception: java.sql.SQLException: 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.at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:545)at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:513)at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:505)at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:479)at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:489)at com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:69)at com.mysql.cj.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:1606)at com.mysql.cj.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:633)at com.mysql.cj.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:347)at com.mysql.cj.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:219)at com.mchange.v2.c3p0.DriverManagerDataSource.getConnection(DriverManagerDataSource.java:175)at com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:220)at com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:206)at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool$1PooledConnectionResourcePoolManager.acquireResource(C3P0PooledConnectionPool.java:203)at com.mchange.v2.resourcepool.BasicResourcePool.doAcquire(BasicResourcePool.java:1138)at com.mchange.v2.resourcepool.BasicResourcePool.doAcquireAndDecrementPendingAcquiresWithinLockOnSuccess(BasicResourcePool.java:1125)at com.mchange.v2.resourcepool.BasicResourcePool.access$700(BasicResourcePool.java:44)at com.mchange.v2.resourcepool.BasicResourcePool$ScatteredAcquireTask.run(BasicResourcePool.java:1870)at com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:696)Caused by: com.mysql.cj.core.exceptions.InvalidConnectionAttributeException: 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.at sun.reflect.GeneratedConstructorAccessor28.newInstance(Unknown Source)at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)at java.lang.reflect.Constructor.newInstance(Constructor.java:423)at com.mysql.cj.core.exceptions.ExceptionFactory.createException(ExceptionFactory.java:54)at com.mysql.cj.core.exceptions.ExceptionFactory.createException(ExceptionFactory.java:73)at com.mysql.cj.jdbc.util.TimeUtil.getCanonicalTimezone(TimeUtil.java:118)at com.mysql.cj.mysqla.MysqlaSession.configureTimezone(MysqlaSession.java:293)at com.mysql.cj.jdbc.ConnectionImpl.initializePropsFromServer(ConnectionImpl.java:2399)at com.mysql.cj.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:1739)at com.mysql.cj.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:1596)… 12 more[WARNING] Having failed to acquire a resource, com.mchange.v2.resourcepool.BasicResourcePool@1e877aa is interrupting all Threads waiting on a resource to check out. Will try again in response to new client requests.

不论你在什么时候结束,重要的是结束之后就不要悔恨

maven搭建ssm框架是使用最新mysql 6.0jar遇到的问题

相关文章:

你感兴趣的文章:

标签云: