嚴重: Servlet.service() for servlet [DispatcherServlet] in context with path [/SupplierSystem] threw exception [Request processing failed; nested exception is org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.exceptions.PersistenceException:
### Error querying database. Cause: org.springframework.jdbc.CannotGetJdbcConnectionException: Could not get JDBC Connection; nested exception is com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Could not create connection to database server.
### The error may exist in file [/Users/liujianfeng/Desktop/demo/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/SupplierSystem/WEB-INF/classes/config/mybatis/mapper/admin/UserMapper.xml]
### The error may involve com.ischoolbar.programmer.dao.admin.UserDao.findByUsername
### The error occurred while executing a query
### Cause: org.springframework.jdbc.CannotGetJdbcConnectionException: Could not get JDBC Connection; nested exception is com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Could not create connection to database server.] with root cause
java.lang.NullPointerException
at com.mysql.jdbc.ConnectionImpl.getServerCharacterEncoding(ConnectionImpl.java:3303)
at com.mysql.jdbc.MysqlIO.sendConnectionAttributes(MysqlIO.java:1987)
at com.mysql.jdbc.MysqlIO.proceedHandshakeWithPluggableAuthentication(MysqlIO.java:1913)
at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1290)
at com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2502)
at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2535)
at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2320)
at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:834)
at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:46)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
at com.mysql.jdbc.Util.handleNewInstance(Util.java:411)
at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:416)
at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:347)
at com.mchange.v2.c3p0.DriverManagerDataSource.getConnection(DriverManagerDataSource.java:120)
at com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:143)
at com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:132)
at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPoolManager.initializeAutomaticTestTable(C3P0PooledConnectionPoolManager.java:772)
at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPoolManager.createPooledConnectionPool(C3P0PooledConnectionPoolManager.java:696)
at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPoolManager.getPool(C3P0PooledConnectionPoolManager.java:257)
at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPoolManager.getPool(C3P0PooledConnectionPoolManager.java:271)
at com.mchange.v2.c3p0.impl.AbstractPoolBackedDataSource.getConnection(AbstractPoolBackedDataSource.java:128)
at org.springframework.jdbc.datasource.DataSourceUtils.doGetConnection(DataSourceUtils.java:111)
at org.springframework.jdbc.datasource.DataSourceUtils.getConnection(DataSourceUtils.java:77)
at org.mybatis.spring.transaction.SpringManagedTransaction.openConnection(SpringManagedTransaction.java:82)
at org.mybatis.spring.transaction.SpringManagedTransaction.getConnection(SpringManagedTransaction.java:68)
at org.apache.ibatis.executor.BaseExecutor.getConnection(BaseExecutor.java:336)
at org.apache.ibatis.executor.SimpleExecutor.prepareStatement(SimpleExecutor.java:84)
at org.apache.ibatis.executor.SimpleExecutor.doQuery(SimpleExecutor.java:62)
at org.apache.ibatis.executor.BaseExecutor.queryFromDatabase(BaseExecutor.java:324)
at org.apache.ibatis.executor.BaseExecutor.query(BaseExecutor.java:156)
at org.apache.ibatis.executor.CachingExecutor.query(CachingExecutor.java:109)
at org.apache.ibatis.executor.CachingExecutor.query(CachingExecutor.java:83)
at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:148)
at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:141)
at org.apache.ibatis.session.defaults.DefaultSqlSession.selectOne(DefaultSqlSession.java:77)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:433)
at com.sun.proxy.$Proxy16.selectOne(Unknown Source)
at org.mybatis.spring.SqlSessionTemplate.selectOne(SqlSessionTemplate.java:166)
at org.apache.ibatis.binding.MapperMethod.execute(MapperMethod.java:82)
at org.apache.ibatis.binding.MapperProxy.invoke(MapperProxy.java:59)
at com.sun.proxy.$Proxy24.findByUsername(Unknown Source)
at com.ischoolbar.programmer.service.admin.impl.UserServiceImpl.findByUsername(UserServiceImpl.java:26)
at com.ischoolbar.programmer.controller.admin.SystemController.loginAct(SystemController.java:136)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)
at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)
at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)
at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)
at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:660)
at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.springframework.web.filter.HiddenHttpMethodFilter.doFilterInternal(HiddenHttpMethodFilter.java:81)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:197)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:490)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:139)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)
at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:678)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343)
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:408)
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:853)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1587)
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:748)
uj5u.com熱心網友回復:
資料庫版本 mysql8.0.19uj5u.com熱心網友回復:
mapper.xml<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ischoolbar.programmer.dao.admin.UserDao">
<!-- 根據用戶名查找用戶 -->
<select id="findByUsername" parameterType="String" resultType="User">
select * from user where username = #{username}
</select>
<!-- 添加用戶 -->
<insert id="add" parameterType="User">
insert into user(id,username,password,roleId,photo,sex,age,address) values(null,#{username},#{password},#{roleId},#{photo},#{sex},#{age},#{address})
</insert>
<!-- 修改用戶 -->
<update id="edit" parameterType="User">
update user set username = #{username},roleId = #{roleId},photo = #{photo},sex = #{sex},age = #{age},address = #{address} where id = #{id}
</update>
<!-- 修改用戶密碼 -->
<update id="editPassword" parameterType="User">
update user set password = #{password} where id = #{id}
</update>
<!-- 洗掉用戶 -->
<delete id="delete" parameterType="String">
delete from user where id in(${value})
</delete>
<!-- 分頁獲取用戶串列 -->
<select id="findList" parameterType="Map" resultType="User">
select * from user where 1 = 1
<if test="username != null">
and username like '%${username}%'
</if>
<if test="roleId != null">
and roleId = #{roleId}
</if>
<if test="sex != null">
and sex = #{sex}
</if>
<if test="offset != null and pageSize != null">
limit #{offset},#{pageSize}
</if>
</select>
<!-- 獲取符合結果的總記錄數 -->
<select id="getTotal" parameterType="Map" resultType="Integer">
select count(*) from user where 1 = 1
<if test="username != null">
and username like '%${username}%'
</if>
<if test="roleId != null">
and roleId = #{roleId}
</if>
<if test="sex != null">
and sex = #{sex}
</if>
</select>
</mapper>
uj5u.com熱心網友回復:
db.propertiesdatasource.connection.driver_class=com.mysql.cj.jdbc.Driver
datasource.connection.url=jdbc:mysql://localhost:3306/db_stock_manager_ssm?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=GMT%2B8
datasource.connection.username=root
datasource.connection.password=1234
#連接池保持的最小連接數,default : 3(建議使用)
datasource.connection.minPoolSize=3
#連接池中擁有的最大連接數,如果獲得新連接時會使連接總數超過這個值則不會再獲取新連接,而是等待其他連接釋放,所以這個值有可能會設計地很大,default : 15(建議使用)
datasource.connection.maxPoolSize=15
#連接的最大空閑時間,如果超過這個時間,某個資料庫連接還沒有被使用,則會斷開掉這個連接。如果為0,則永遠不會斷開連接,即回收此連接。default : 0 單位 s(建議使用)
datasource.connection.maxIdleTime=0
#連接池在無空閑連接可用時一次性創建的新資料庫連接數,default : 3(建議使用)
datasource.connection.acquireIncrement=3
#連接池為資料源快取的PreparedStatement的總數。由于PreparedStatement屬于單個Connection,所以這個數量應該根據應用中平均連接數乘以每個連接的平均PreparedStatement來計算。同時maxStatementsPerConnection的配置無效。default : 0(不建議使用)
datasource.connection.maxStatements=0
#連接池為資料源單個Connection快取的PreparedStatement數,這個配置比maxStatements更有意義,因為它快取的服務物件是單個資料連接,如果設定的好,肯定是可以提高性能的。為0的時候不快取。default : 0(看情況而論)
datasource.connection.maxStatementsPerConnection=0
#連接池初始化時創建的連接數,default : 3(建議使用)
datasource.connection.initialPoolSize=3
#用來配置測驗空閑連接的間隔時間。測驗方式還是上面的兩種之一,可以用來解決MySQL8小時斷開連接的問題。因為它保證連接池會每隔一定時間對空閑連接進行一次測驗,從而保證有效的空閑連接能每隔一定時間訪問一次資料庫,將于MySQL8小時無會話的狀態打破。為0則不測驗。default : 0(建議使用)
datasource.connection.idleConnectionTestPeriod=0
#連接池在獲得新連接失敗時重試的次數,如果小于等于0則無限重試直至連接獲得成功。default : 30(建議使用)
datasource.connection.acquireRetryAttempts=30
#如果為true,則當連接獲取失敗時自動關閉資料源,除非重新啟動應用程式。所以一般不用。default : false(不建議使用)
datasource.connection.breakAfterAcquireFailure=false
#性能消耗大。如果為true,在每次getConnection的時候都會測驗,為了提高性能,盡量不要用。default : false(不建議使用)
datasource.connection.testConnectionOnCheckout=false
#配置當連接池所有連接用完時應用程式getConnection的等待時間。為0則無限等待直至有其他連接釋放或者創建新的連接,不為0則當時間到的時候如果仍沒有獲得連接,則會拋出SQLException。其實就是acquireRetryAttempts*acquireRetryDelay。default : 0(與上面兩個,有重復,選擇其中兩個都行)
datasource.connection.checkoutTimeout=30000
#如果為true,則在close的時候測驗連接的有效性。default : false(不建議使用)
datasource.connection.testConnectionOnCheckin=false
#配置一個表名,連接池根據這個表名用自己的測驗sql陳述句在這個空表上測驗資料庫連接,這個表只能由c3p0來使用,用戶不能操作。default : null(不建議使用)
datasource.connection.automaticTestTable=c3p0TestTable
#連接池在獲得新連接時的間隔時間。default : 1000 單位ms(建議使用)
datasource.connection.acquireRetryDelay=1000
#為0的時候要求所有的Connection在應用程式中必須關閉。如果不為0,則強制在設定的時間到達后回收Connection,所以必須小心設定,保證在回收之前所有資料庫操作都能夠完成。這種限制減少Connection未關閉情況的不是很適用。建議手動關閉。default : 0 單位 s(不建議使用)
datasource.connection.unreturnedConnectionTimeout=0
#這個配置主要是為了快速減輕連接池的負載,比如連接池中連接數因為某次資料訪問高峰導致創建了很多資料連接,但是后面的時間段需要的資料庫連接數很少,需要快速釋放,必須小于maxIdleTime。其實這個沒必要配置,maxIdleTime已經配置了。default : 0 單位 s(不建議使用)
datasource.connection.maxIdleTimeExcessConnections=0
#配置連接的生存時間,超過這個時間的連接將由連接池自動斷開丟棄掉。當然正在使用的連接不會馬上斷開,而是等待它close再斷開。配置為0的時候則不會對連接的生存時間進行限制。default : 0 單位 s(不建議使用)
datasource.connection.maxConnectionAge=0
uj5u.com熱心網友回復:
程式報空指標了。你的mapper檔案中的parameterType=“com.XXX.XXX.User”,寫User類的全路徑試試呢。uj5u.com熱心網友回復:
無法創建資料庫連接,應該是資料庫版本問題https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/88628997
uj5u.com熱心網友回復:
我沒用maven,去哪該驅動版本號啊
uj5u.com熱心網友回復:
應該是資料庫沒連上,先看看Mysql資料庫版本和jdbc驅動版本是否相對應,mysql安裝程式自帶connect/j驅動。
如果上面一步沒問題的話,就要看你SqlMapConfig.xml檔案配置是否正確。
uj5u.com熱心網友回復:
那你引入的這個依賴肯定是有版本的,你把這個驅動依賴換成符合你專案的版本就行了
uj5u.com熱心網友回復:
### Cause: org.springframework.jdbc.CannotGetJdbcConnectionException: Could not get JDBC Connection; nested exception is com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Could not create connection to database server.] with root causejava.lang.NullPointerException
at com.mysql.jdbc.ConnectionImpl.getServerCharacterEncoding(ConnectionImpl.java:3303)
這個問題主要是由jdbc版本低導致的,至少要 5.1.41+,參考 https://github.com/dbeaver/dbeaver/issues/1864
jdbc jar檔案可以從mysql官網下載,或者 https://mvnrepository.com/artifact/mysql/mysql-connector-java/8.0.19 下載jar檔案
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/82211.html
標籤:Web 開發
上一篇:關閉fastDFS連接?
