에러 로그
Caused by: java.net.ConnectException: Connection timed out: connect
at java.net.DualStackPlainSocketImpl.connect0(Native Method) ~[?:1.8.0_212]
at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:79) ~[?:1.8.0_212]
at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350) ~[?:1.8.0_212]
at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206) ~[?:1.8.0_212]
at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188) ~[?:1.8.0_212]
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172) ~[?:1.8.0_212]
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392) ~[?:1.8.0_212]
at java.net.Socket.connect(Socket.java:589) ~[?:1.8.0_212]
at java.net.Socket.connect(Socket.java:538) ~[?:1.8.0_212]
at java.net.Socket.<init>(Socket.java:434) ~[?:1.8.0_212]
at java.net.Socket.<init>(Socket.java:244) ~[?:1.8.0_212]
at com.mysql.jdbc.StandardSocketFactory.connect(StandardSocketFactory.java:258) ~[mysql-connector-java-5.1.31.jar:?]
at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:306) ~[mysql-connector-java-5.1.31.jar:?]
at com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2504) ~[mysql-connector-java-5.1.31.jar:?]
at com.mysql.jdbc.ConnectionImpl.connectWithRetries(ConnectionImpl.java:2346) ~[mysql-connector-java-5.1.31.jar:?]
at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2328) ~[mysql-connector-java-5.1.31.jar:?]
at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:832) ~[mysql-connector-java-5.1.31.jar:?]
at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:46) ~[mysql-connector-java-5.1.31.jar:?]
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[?:1.8.0_212]
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) ~[?:1.8.0_212]
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) ~[?:1.8.0_212]
at java.lang.reflect.Constructor.newInstance(Constructor.java:423) ~[?:1.8.0_212]
at com.mysql.jdbc.Util.handleNewInstance(Util.java:408) ~[mysql-connector-java-5.1.31.jar:?]
at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:417) ~[mysql-connector-java-5.1.31.jar:?]
at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:344) ~[mysql-connector-java-5.1.31.jar:?]
at org.apache.commons.dbcp.DriverConnectionFactory.createConnection(DriverConnectionFactory.java:38) ~[commons-dbcp-1.4.jar:1.4]
at org.apache.commons.dbcp.PoolableConnectionFactory.makeObject(PoolableConnectionFactory.java:582) ~[commons-dbcp-1.4.jar:1.4]
at org.apache.commons.dbcp.BasicDataSource.validateConnectionFactory(BasicDataSource.java:1556) ~[commons-dbcp-1.4.jar:1.4]
at org.apache.commons.dbcp.BasicDataSource.createPoolableConnectionFactory(BasicDataSource.java:1545) ~[commons-dbcp-1.4.jar:1.4]
at org.apache.commons.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:1388) ~[commons-dbcp-1.4.jar:1.4]
at org.apache.commons.dbcp.BasicDataSource.getConnection(BasicDataSource.java:1044) ~[commons-dbcp-1.4.jar:1.4]
at org.springframework.jdbc.datasource.DataSourceTransactionManager.doBegin(DataSourceTransactionManager.java:204) ~[spring-jdbc-4.2.4.RELEASE.jar:4.2.4.RELEASE]
해결방법
스프링에서 데이터베이스 접근하여 접속을 기다리다가 뱉는 타임아웃 에러이다.
아래와 같은 사항을 확인해야한다.
- 내가 사용하는 데이터베이스 클래스의 스펠링이 정확히 맞는지 확인
- 내 컴퓨터에서 적은 데이터베이스의 아이피 / 포트로 실제 DB서버에 잘 접속되는지 확인
- DB서버쪽으로 방화벽이나 포트가 막혀있지않는지 확인
- DB 접속 ID/Password 가 맞는지 확인
- 각 데이터베이스에 맞게 연결 커넥션을 적었는지 확인
(mysql 계열은 dbname 을 / 로 분리하고, mssql을 ;로 분리하고 뒤에 적어준다.)
jdbc:mariadb://127.0.0.1:3306/test
jdbc:sqlserver://127.0.0.1:1443;databaseName=test - 간혹, 인터넷 사정이 좋지않아 연결이 오래걸리거나 할 경우에는 타임아웃 시간을 늘려도 될 수 도있지만,
대용량데이터도 아니고, 요즘같은 인터넷 속도로 이 원인은 지극히 드물다....
본 포스팅은 정답노트라기 보다는
경험과 생각을 정리한 낙서장입니다.
댓글