#mysql #spring #spring-mvc
#mysql #весна #spring-mvc
Вопрос:
Эта ошибка возникает время от времени, в то время как вся функция работает хорошо. Но это исключение может время от времени возникать. Я нашел одно решение, которое копирует mysql-connector-java-5.1.24.jar
в tomcat/lib
папку, в то время как эта ошибка исчезнет. Без этого веб-сервер в конечном итоге создаст слишком много подключений к базе данных.
Кто-нибудь может помочь объяснить, почему это происходит, и почему следует переместить jar из webapps
в tomcat/lib
?
### Error querying database. Cause: org.springframework.jdbc.CannotGetJdbcConnectionException: Could not get JDBC Connection; nested exception is java.sql.SQLException: No suitable driver found for jdbc:mysql://*:3399/*?autoReconnect=trueamp;amp;useUnicode=trueamp;amp;characterEncoding=UTF-8amp;allowMultiQueries=trueamp;amp;mysqlEncoding=utf-8
### The error may exist in net/ebaolife/tpa/mapper/DivisionalCaseMapper.java (best guess)
### The error may involve net.ebaolife.tpa.mapper.DivisionalCaseMapper.selectCount
### The error occurred while executing a query
### Cause: org.springframework.jdbc.CannotGetJdbcConnectionException: Could not get JDBC Connection; nested exception is java.sql.SQLException: No suitable driver found for jdbc:mysql://*:3399/*?autoReconnect=trueamp;amp;useUnicode=trueamp;amp;characterEncoding=UTF-8amp;allowMultiQueries=trueamp;amp;mysqlEncoding=utf-8
at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:79)
at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:447)
at com.sun.proxy.$Proxy945.selectMap(Unknown Source)
at org.mybatis.spring.SqlSessionTemplate.selectMap(SqlSessionTemplate.java:183)
at org.apache.ibatis.binding.MapperMethod.executeForMap(MapperMethod.java:174)
at org.apache.ibatis.binding.MapperMethod.execute(MapperMethod.java:70)
at org.apache.ibatis.binding.MapperProxy.invoke(MapperProxy.java:53)
at com.sun.proxy.$Proxy968.selectCount(Unknown Source)
at net.ebaolife.tpa.service.impl.DivisionalCaseServiceImpl.selectCount(DivisionalCaseServiceImpl.java:329)
at net.ebaolife.tpa.service.impl.DivisionalCaseServiceImpl$$FastClassBySpringCGLIB$$605de877.invoke(<generated>)
at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:204)
at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:720)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:157)
at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:96)
at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:260)
at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:94)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:92)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:655)
at net.ebaolife.tpa.service.impl.DivisionalCaseServiceImpl$$EnhancerBySpringCGLIB$$e8a8ee89.selectCount(<generated>)
at net.ebaolife.tpa.web.controller.WebSocketController$1.run(WebSocketController.java:37)
at org.springframework.scheduling.support.DelegatingErrorHandlingRunnable.run(DelegatingErrorHandlingRunnable.java:54)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:308)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:180)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:294)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
Caused by: org.apache.ibatis.exceptions.PersistenceException:
Комментарии:
1. Трассировка стека — это абсолютный минимум, который вы должны предоставить. С текущим объемом информации, которую вы нам предоставили, только гадалка может дать вам решение.
2. @RafalG. прикреплено. tks!
3. Вы развертываете war в tomcat? Этот jar соединителя должен находиться в пути к классу приложения.
4. Это немного загадочно. Вы говорите, что развертываете приложение, и оно работает большую часть времени, но иногда возникает это исключение? Драйвер доступен или недоступен… оно никогда не должно быть «иногда доступно».