com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Could not create connection to

困扰了我两天的异常

com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Could not create connection to database server.
at sun.reflect.GeneratedConstructorAccessor40.newInstance(Unknown Source)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:526)
at com.mysql.jdbc.Util.handleNewInstance(Util.java:408)
at com.mysql.jdbc.Util.getInstance(Util.java:383)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1023)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:997)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:983)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:928)
at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2576)
at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2309)
at com.mysql.jdbc.ConnectionImpl.(ConnectionImpl.java:834)
at com.mysql.jdbc.JDBC4Connection.(JDBC4Connection.java:46)
at sun.reflect.GeneratedConstructorAccessor37.newInstance(Unknown Source)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:526)
at com.mysql.jdbc.Util.handleNewInstance(Util.java:408)
at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:419)
at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:344)
at com.alibaba.druid.pool.DruidAbstractDataSource.createPhysicalConnection(DruidAbstractDataSource.java:1375)
at com.alibaba.druid.pool.DruidAbstractDataSource.createPhysicalConnection(DruidAbstractDataSource.java:1431)
at com.alibaba.druid.pool.DruidDataSource$CreateConnectionThread.run(DruidDataSource.java:1844)
Caused by: java.lang.NullPointerException
at com.mysql.jdbc.ConnectionImpl.getServerCharset(ConnectionImpl.java:3299)
at com.mysql.jdbc.MysqlIO.sendConnectionAttributes(MysqlIO.java:1967)
at com.mysql.jdbc.MysqlIO.proceedHandshakeWithPluggableAuthentication(MysqlIO.java:1893)
at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1287)
at com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2494)
at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2527)
… 12 more

一开始我通过页面访问服务层的方法,页面就一直在转,然后我就把dubbo:service中的timeout属性设置为短一点,结果页面就出现这样的一异常:

HTTP Status 500 - Request processing failed; nested exception is com.alibaba.dubbo.rpc.RpcException: Failed to invoke the method getItemById in the service com.taotao.service.ItemService. Tried 3 times of the providers [192.168.56.1:20880] (1/1) from the registry 192.168.226.130:2181 on the consumer 192.168.56.1 using the dubbo version 2.5.3. Last error is: Invoke remote method timeout. method: getItemById, provider: dubbo://192.168.56.1:20880/com.taotao.service.ItemService?anyhost=true&application=taotao-manager-web&check=false&dubbo=2.5.3&interface=com.taotao.service.ItemService&methods=getItemById&pid=10720&revision=0.0.1-SNAPSHOT&side=consumer&timestamp=1617600973603, cause: Waiting server-side response timeout. start time: 2021-04-05 13:36:28.304, end time: 2021-04-05 13:36:29.305, client elapsed: 0 ms, server elapsed: 1001 ms, timeout: 1000 ms, request: Request [id=2, version=2.0.0, twoway=true, event=false, broken=false, data=RpcInvocation [methodName=getItemById, parameterTypes=[long], arguments=[536563], attachments={path=com.taotao.service.ItemService, interface=com.taotao.service.ItemService, version=0.0.0}]], channel: /192.168.56.1:4624 -> /192.168.56.1:20880

但是控制台没出现异常,在网上找了各种方法,有说数据库密码的问题、有的又说数据库服务没开等等,后来我直接在service层下的source文件夹里面加了log4j.properties文件,然后在运行过程就出现了最上面的那个异常。

在这里插入图片描述

接着我又上网找,说用的mysql8.0.11的URL为:jdbc:mysql://localhost:3306/taotao?characterEncoding=utf-8&serverTimezone=UTC,Driver为 com.mysql.cj.jdbc.Driver才行。

结果直接出现以下异常:

java.sql.SQLException: com.mysql.cj.jdbc.Driver
at com.alibaba.druid.util.JdbcUtils.createDriver(JdbcUtils.java:520)
at com.alibaba.druid.pool.DruidDataSource.init(DruidDataSource.java:583)
at com.alibaba.druid.pool.DruidDataSource.getConnection(DruidDataSource.java:915)
at com.alibaba.druid.pool.DruidDataSource.getConnection(DruidDataSource.java:911)
at com.alibaba.druid.pool.DruidDataSource.getConnection(DruidDataSource.java:98)
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:81)
at org.mybatis.spring.transaction.SpringManagedTransaction.getConnection(SpringManagedTransaction.java:67)
at org.apache.ibatis.executor.BaseExecutor.getConnection(BaseExecutor.java:279)
at org.apache.ibatis.executor.SimpleExecutor.prepareStatement(SimpleExecutor.java:72)
at org.apache.ibatis.executor.SimpleExecutor.doQuery(SimpleExecutor.java:59)
at org.apache.ibatis.executor.BaseExecutor.queryFromDatabase(BaseExecutor.java:267)
at org.apache.ibatis.executor.BaseExecutor.query(BaseExecutor.java:137)
at org.apache.ibatis.executor.CachingExecutor.query(CachingExecutor.java:96)
at org.apache.ibatis.executor.CachingExecutor.query(CachingExecutor.java:77)
at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:108)
at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:102)
at org.apache.ibatis.session.defaults.DefaultSqlSession.selectOne(DefaultSqlSession.java:66)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.mybatis.spring.SqlSessionTemplate S q l S e s s i o n I n t e r c e p t o r . i n v o k e ( S q l S e s s i o n T e m p l a t e . j a v a : 358 ) a t c o m . s u n . p r o x y . SqlSessionInterceptor.invoke(SqlSessionTemplate.java:358) at com.sun.proxy. SqlSessionInterceptor.invoke(SqlSessionTemplate.java:358)atcom.sun.proxy.Proxy32.selectOne(Unknown Source)
at org.mybatis.spring.SqlSessionTemplate.selectOne(SqlSessionTemplate.java:163)
at org.apache.ibatis.binding.MapperMethod.execute(MapperMethod.java:68)
at org.apache.ibatis.binding.MapperProxy.invoke(MapperProxy.java:52)
at com.sun.proxy.$Proxy33.selectByPrimaryKey(Unknown Source)
at com.taotao.service.impl.ItemServiceImpl.getItemById(ItemServiceImpl.java:24)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:302)
at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:190)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:157)
at org.springframework.transaction.interceptor.TransactionInterceptor 1. p r o c e e d W i t h I n v o c a t i o n ( T r a n s a c t i o n I n t e r c e p t o r . j a v a : 99 ) a t o r g . s p r i n g f r a m e w o r k . t r a n s a c t i o n . i n t e r c e p t o r . T r a n s a c t i o n A s p e c t S u p p o r t . i n v o k e W i t h i n T r a n s a c t i o n ( T r a n s a c t i o n A s p e c t S u p p o r t . j a v a : 281 ) a t o r g . s p r i n g f r a m e w o r k . t r a n s a c t i o n . i n t e r c e p t o r . T r a n s a c t i o n I n t e r c e p t o r . i n v o k e ( T r a n s a c t i o n I n t e r c e p t o r . j a v a : 96 ) a t o r g . s p r i n g f r a m e w o r k . a o p . f

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
### 回答1: com.mysql.jdbc.exceptions.jdbc4.mysqlnontransientconnectionexception: 无法创建到数据库的连接。 这个错误通常是由于以下原因之一引起的: 1. 数据库服务器已经关闭或无法访问。 2. 数据库连接池已满,无法创建新的连接。 3. 数据库连接参数配置错误,例如用户名、密码、主机名、端口等。 解决这个问题的方法包括: 1. 检查数据库服务器是否正常运行,并确保可以访问。 2. 增加数据库连接池的大小,或者使用更高效的连接池。 3. 检查数据库连接参数配置是否正确,例如用户名、密码、主机名、端口等。 ### 回答2: com.mysql.jdbc.exceptions.jdbc4.mysqlnontransientconnectionexception: could not create connection to 是一个MySQL数据库连接错误的异常。该异常意味着在建立连接时遇到了问题。 出现这个异常的原因可能有以下几种情况: 1. 数据库服务器未启动:检查数据库服务器是否正在运行,并确保数据库服务器已启动。 2. 连接参数错误:检查数据库连接参数是否正确,包括数据库的主机名、端口号、用户名和密码等。 3. 连接超时:如果连接数据库的时间超过了预定的超时时间,就会出现这个异常。可以尝试增加连接超时时间来解决问题。 4. 数据库连接数达到上限:如果数据库连接数已经达到了上限,再次尝试建立连接时就会出现这个异常。可以尝试增加数据库连接数的上限或者释放一些闲置的连接来解决问题。 解决这个异常的方法可以有以下几种: 1. 检查数据库服务器状态,并确保数据库服务器已经启动。 2. 检查连接参数,确保参数设置正确。 3. 增加连接超时时间,可以在连接字符串中设置连接超时时间。 4. 增加数据库连接数的上限,可以在数据库的配置文件中修改连接池的配置。 总结:com.mysql.jdbc.exceptions.jdbc4.mysqlnontransientconnectionexception: could not create connection to 是一个数据库连接错误的异常,在处理时需要仔细检查数据库服务器状态、连接参数、连接超时和连接数等问题,并针对具体情况采取相应的解决方法来解决该异常。 ### 回答3: com.mysql.jdbc.exceptions.jdbc4.mysqlnontransientconnectionexception: could not create connection to 是一个MySQL数据库连接异常的错误消息。这个错误通常表示在尝试连接到MySQL数据库时发生了问题。 造成这个错误的原因可能有几种。首先,可能是由于网络问题导致无法连接到MySQL数据库。这可能是由于网络连接不稳定或服务器故障引起的。您可以尝试使用其他网络连接或联系数据库管理员进行故障排除。 其次,可能是由于MySQL数据库的配置错误导致连接失败。这可能包括错误的用户名、密码或数据库名称等。您可以验证这些参数是否正确,并确保数据库正确地配置了允许远程连接。 另外,这个错误还可能是由于数据库连接池达到了最大连接数限制而导致的。当数据库连接池中的连接数达到最大时,新的连接请求将无法创建。您可以调整数据库连接池的最大连接数设置,或通过关闭未使用的连接来释放连接。 最后,这个错误还可能是由于数据库服务器不可用或已关闭引起的。您可以确认数据库服务器是否正在运行,并检查是否有其他相关问题或错误消息。 总之,com.mysql.jdbc.exceptions.jdbc4.mysqlnontransientconnectionexception: could not create connection to 指的是在连接MySQL数据库时出现了问题。您可以通过检查网络连接、验证数据库配置、调整连接池设置和确认数据库服务器是否可用来解决这个错误。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值