• 数据库连接报错


    学习Spring的JDBC,在db.properties、applicationContext.xml中配置数据库。

    代码如下:

    db.properties:

    1 jdbc.user=root
    2 jdbc.password=1234
    3 jdbc.driverClass=com.mysql.jdbc.Driver
    4 jdbc.jdbcUrl=jdbc:mysql://localhost:3036/spring
    5 
    6 jdbc.initPoolSize=5
    7 jdbc.maxPoolSize=10

    applicationContext.xml:

     1 <?xml version="1.0" encoding="UTF-8"?>
     2 <beans xmlns="http://www.springframework.org/schema/beans"
     3     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     4     xmlns:context="http://www.springframework.org/schema/context"
     5     xmlns:jdbc="http://www.springframework.org/schema/jdbc"
     6     xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
     7         http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd
     8         http://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc-4.0.xsd">
     9 
    10     <!-- 导入资源文件 -->
    11     <context:property-placeholder location="classpath:db.properties"/>
    12     
    13     <!-- 配置C3P0数据源 -->
    14     <bean id="dataSource"
    15           class="com.mchange.v2.c3p0.ComboPooledDataSource">
    16           <property name="user" value="${jdbc.user}"></property>  
    17           <property name="password" value="${jdbc.password}"></property>
    18           <property name="driverClass" value="${jdbc.driverClass}"></property>
    19           <property name="jdbcUrl" value="${jdbc.jdbcUrl}"></property>
    20           
    21           <property name="initialPoolSize" value="${jdbc.initPoolSize}"></property>
    22           <property name="maxPoolSize" value="${jdbc.maxPoolSize}"></property>
    23     </bean>
    24     
    25     <!-- 配置Spring的JdbcTemplate -->
    26     <bean id="jdbcTemplate"
    27           class="org.springframework.jdbc.core.JdbcTemplate">
    28           <property name="dataSource" ref="dataSource"></property>
    29     </bean>
    30 
    31 </beans>

    JdbcTest.java:

     1 package com.tt.spring.jdbc;
     2 
     3 import java.sql.SQLException;
     4 
     5 import javax.sql.DataSource;
     6 
     7 import org.junit.Test;
     8 import org.springframework.context.ApplicationContext;
     9 import org.springframework.context.support.ClassPathXmlApplicationContext;
    10 import org.springframework.jdbc.core.JdbcTemplate;
    11 
    12 public class JDBCTest {
    13    
    14     private ApplicationContext ctx = null;
    15     private JdbcTemplate jdbcTemplate;
    16     
    17     {
    18         ctx = new ClassPathXmlApplicationContext("applicationContext.xml");        
    19         jdbcTemplate = (JdbcTemplate) ctx.getBean("jdbcTemplate");
    20     }
    21     
    22     /**
    23      * 执行INSERT,UPDATE,DELETE
    24      */
    25     @Test
    26     public void testUpdate(){
    27         String sql = "UPDATE employees "
    28                    + "SET last_name = ? "
    29                    + "WHERE id = ?";
    30         jdbcTemplate.update(sql, "Jack",3);
    31         
    32         
    33     }
    34     
    35     @Test
    36     public void testDataSource() throws SQLException {
    37         
    38         DataSource dataSource = ctx.getBean(DataSource.class);
    39         System.out.println(dataSource.getConnection());
    40     }
    41 
    42 }

    运行JdbcTest.java,报错如下:

    警告: com.mchange.v2.async.ThreadPoolAsynchronousRunner$DeadlockDetector@ede0b5e -- APPARENT DEADLOCK!!! Complete Status:
    Managed Threads: 3
    Active Threads: 3
    Active Tasks:
    com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask@4124eece (com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#2)
    com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask@3fde994f (com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#0)
    com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask@702fec0d (com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#1)
    Pending Tasks:
    com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask@473fc536
    com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask@210b1181
    Pool thread stack traces:
    Thread[com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#2,5,main]
    java.net.DualStackPlainSocketImpl.connect0(Native Method)
    java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:79)
    java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350)
    java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)
    java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)
    java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172)
    java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
    java.net.Socket.connect(Socket.java:589)
    java.net.Socket.connect(Socket.java:538)
    java.net.Socket.<init>(Socket.java:434)
    java.net.Socket.<init>(Socket.java:244)
    com.mysql.jdbc.StandardSocketFactory.connect(StandardSocketFactory.java:258)
    com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:306)
    com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2502)
    com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2539)
    com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2321)
    com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:832)
    com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:46)
    sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
    sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    java.lang.reflect.Constructor.newInstance(Constructor.java:423)
    com.mysql.jdbc.Util.handleNewInstance(Util.java:409)
    com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:417)
    com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:344)
    com.mchange.v2.c3p0.DriverManagerDataSource.getConnection(DriverManagerDataSource.java:134)
    com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:182)
    com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:171)
    com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool$1PooledConnectionResourcePoolManager.acquireResource(C3P0PooledConnectionPool.java:137)
    com.mchange.v2.resourcepool.BasicResourcePool.doAcquire(BasicResourcePool.java:1014)
    com.mchange.v2.resourcepool.BasicResourcePool.access$800(BasicResourcePool.java:32)
    com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask.run(BasicResourcePool.java:1810)
    com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:547)
    Thread[com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#0,5,main]
    java.net.DualStackPlainSocketImpl.connect0(Native Method)
    java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:79)
    java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350)
    java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)
    java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)
    java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172)
    java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
    java.net.Socket.connect(Socket.java:589)
    java.net.Socket.connect(Socket.java:538)
    java.net.Socket.<init>(Socket.java:434)
    java.net.Socket.<init>(Socket.java:244)
    com.mysql.jdbc.StandardSocketFactory.connect(StandardSocketFactory.java:258)
    com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:306)
    com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2502)
    com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2539)
    com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2321)
    com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:832)
    com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:46)
    sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
    sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    java.lang.reflect.Constructor.newInstance(Constructor.java:423)
    com.mysql.jdbc.Util.handleNewInstance(Util.java:409)
    com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:417)
    com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:344)
    com.mchange.v2.c3p0.DriverManagerDataSource.getConnection(DriverManagerDataSource.java:134)
    com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:182)
    com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:171)
    com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool$1PooledConnectionResourcePoolManager.acquireResource(C3P0PooledConnectionPool.java:137)
    com.mchange.v2.resourcepool.BasicResourcePool.doAcquire(BasicResourcePool.java:1014)
    com.mchange.v2.resourcepool.BasicResourcePool.access$800(BasicResourcePool.java:32)
    com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask.run(BasicResourcePool.java:1810)
    com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:547)
    Thread[com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#1,5,main]
    java.net.DualStackPlainSocketImpl.connect0(Native Method)
    java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:79)
    java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350)
    java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)
    java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)
    java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172)
    java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
    java.net.Socket.connect(Socket.java:589)
    java.net.Socket.connect(Socket.java:538)
    java.net.Socket.<init>(Socket.java:434)
    java.net.Socket.<init>(Socket.java:244)
    com.mysql.jdbc.StandardSocketFactory.connect(StandardSocketFactory.java:258)
    com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:306)
    com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2502)
    com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2539)
    com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2321)
    com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:832)
    com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:46)
    sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
    sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    java.lang.reflect.Constructor.newInstance(Constructor.java:423)
    com.mysql.jdbc.Util.handleNewInstance(Util.java:409)
    com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:417)
    com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:344)
    com.mchange.v2.c3p0.DriverManagerDataSource.getConnection(DriverManagerDataSource.java:134)
    com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:182)
    com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:171)
    com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool$1PooledConnectionResourcePoolManager.acquireResource(C3P0PooledConnectionPool.java:137)
    com.mchange.v2.resourcepool.BasicResourcePool.doAcquire(BasicResourcePool.java:1014)
    com.mchange.v2.resourcepool.BasicResourcePool.access$800(BasicResourcePool.java:32)
    com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask.run(BasicResourcePool.java:1810)
    com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:547)


    二月 21, 2017 4:47:47 下午 com.mchange.v2.async.ThreadPoolAsynchronousRunner processReplacedThreads
    警告: Task com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask@4124eece (in deadlocked PoolThread) failed to complete in maximum time 60000ms. Trying interrupt().
    二月 21, 2017 4:47:47 下午 com.mchange.v2.async.ThreadPoolAsynchronousRunner processReplacedThreads
    警告: Task com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask@3fde994f (in deadlocked PoolThread) failed to complete in maximum time 60000ms. Trying interrupt().
    二月 21, 2017 4:47:47 下午 com.mchange.v2.async.ThreadPoolAsynchronousRunner processReplacedThreads
    警告: Task com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask@702fec0d (in deadlocked PoolThread) failed to complete in maximum time 60000ms. Trying interrupt().
    二月 21, 2017 4:47:48 下午 com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask run
    警告: com.mchange.v2.resourcepool.BasicResourcePool@78b729e6 -- Thread unexpectedly interrupted while performing an acquisition attempt.
    java.lang.InterruptedException: sleep interrupted
    at java.lang.Thread.sleep(Native Method)
    at com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask.run(BasicResourcePool.java:1805)
    at com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:547)

    二月 21, 2017 4:47:48 下午 com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask run
    警告: com.mchange.v2.resourcepool.BasicResourcePool@78b729e6 -- Thread unexpectedly interrupted while performing an acquisition attempt.
    java.lang.InterruptedException: sleep interrupted
    at java.lang.Thread.sleep(Native Method)
    at com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask.run(BasicResourcePool.java:1805)
    at com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:547)

    二月 21, 2017 4:47:48 下午 com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask run
    警告: com.mchange.v2.resourcepool.BasicResourcePool@78b729e6 -- Thread unexpectedly interrupted while performing an acquisition attempt.
    java.lang.InterruptedException: sleep interrupted
    at java.lang.Thread.sleep(Native Method)
    at com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask.run(BasicResourcePool.java:1805)
    at com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:547)

    二月 21, 2017 4:48:17 下午 com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask run
    警告: com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask@210b1181 -- 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:
    com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure

    The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.
    at sun.reflect.GeneratedConstructorAccessor7.newInstance(Unknown Source)
    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:409)
    at com.mysql.jdbc.SQLError.createCommunicationsException(SQLError.java:1127)
    at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:356)
    at com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2502)
    at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2539)
    at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2321)
    at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:832)
    at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:46)
    at sun.reflect.GeneratedConstructorAccessor8.newInstance(Unknown Source)
    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:409)
    at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:417)
    at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:344)
    at com.mchange.v2.c3p0.DriverManagerDataSource.getConnection(DriverManagerDataSource.java:134)
    at com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:182)
    at com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:171)
    at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool$1PooledConnectionResourcePoolManager.acquireResource(C3P0PooledConnectionPool.java:137)
    at com.mchange.v2.resourcepool.BasicResourcePool.doAcquire(BasicResourcePool.java:1014)
    at com.mchange.v2.resourcepool.BasicResourcePool.access$800(BasicResourcePool.java:32)
    at com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask.run(BasicResourcePool.java:1810)
    at com.mchange.v2.async.ThreadPerTaskAsynchronousRunner$TaskThread.run(ThreadPerTaskAsynchronousRunner.java:255)
    Caused by: java.net.ConnectException: Connection refused: connect
    at java.net.DualStackPlainSocketImpl.connect0(Native Method)
    at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:79)
    at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350)
    at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)
    at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)
    at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172)
    at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
    at java.net.Socket.connect(Socket.java:589)
    at java.net.Socket.connect(Socket.java:538)
    at java.net.Socket.<init>(Socket.java:434)
    at java.net.Socket.<init>(Socket.java:244)
    at com.mysql.jdbc.StandardSocketFactory.connect(StandardSocketFactory.java:258)
    at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:306)
    ... 19 more

    原因分析:

    数据库的URL写错了:端口号不是3036,而是3306!

  • 相关阅读:
    A1015. Reversible Primes (20)
    A1024. Palindromic Number (25)
    A1023. Have Fun with Numbers (20)
    B1017. A除以B (20)
    A1059. Prime Factors (25)
    阵列命令
    工具面板
    圆角与镜像命令
    拉伸与缩放命令
    autium designer
  • 原文地址:https://www.cnblogs.com/TTTTT/p/6425038.html
Copyright © 2020-2023  润新知