2016-10-19 3 views
3

Heroku에 배포 된 웹 응용 프로그램을 제공하는 postgre 데이터베이스와 연결하려고합니다. JDBC를 사용하여 Heroku Database를 연결할 때 적절한 드라이버를 찾지 못했습니다.

나는 this site에서의 지시 사항을 따라 내 응용 프로그램을 배포하지만 내가 herehere 주어진 제안을하려고 다음과 같은 오류 메시지가
No suitable driver found for jdbc:postgresql://ec2-184-73-222-90.compute-1.amazonaws.com:5432/d9l4hq0c2h46o6?user=wyhgmwybghpndl&password=kWxLQ_y2risoVSFbzTKR_YsUFF&sslmode=require 

을 던졌다지만 작동하지 않았다. 내 빌드 경로에 외부 JARS로 postgresql-9.4.1211.jre6.jar을 추가했습니다.

다음은 GET 요청을 받고

import java.net.URI; 
import java.net.URISyntaxException; 
import java.sql.Connection; 
import java.sql.DriverManager; 
import java.sql.SQLException; 

import javax.ws.rs.GET; 
import javax.ws.rs.Path; 
import javax.ws.rs.Produces; 
import javax.ws.rs.core.MediaType; 

@Path("wallpost") 
public class wallpost { 

    private static String connectionMsg = null; 
    private static final String DATABASE_URL = "DATABASE_URL"; 
    private static final String JDBC_POSTGRE = "jdbc:postgresql://" ; 
    private static final String JDBC_DATABASE_URL = "JDBC_DATABASE_URL"; 

    @GET 
    @Produces(MediaType.TEXT_PLAIN) 
    public String getPosts() { 

     Connection conn = null; 
     try { 
      conn = tryAndConnectToDB(); 
     } catch (SQLException e) { 
      connectionMsg = e.getMessage(); 
     } catch (URISyntaxException e) { 
      connectionMsg = e.getMessage(); 
      e.printStackTrace(); 
     } 

     if (conn != null) 
      try { 
       return "Oops!! No posts made yet!!" + conn.getSchema(); 
      } catch (SQLException e) { 
       e.printStackTrace(); 
      } 
      return connectionMsg; 
    } 

    private static Connection tryAndConnectToDB() throws URISyntaxException, SQLException { 

     try { 
      Class.forName("org.postgresql.Driver"); 
     } 
     catch (ClassNotFoundException e) { 

      connectionMsg = e.getMessage();   
     } 

     final String dbUrl = System.getenv(JDBC_DATABASE_URL); 

      //URI dbURI = new URI(System.getenv(DATABASE_URL)); 

//   final String userName = dbURI.getUserInfo().split(":")[0]; 
//   final String userPassword = dbURI.getUserInfo().split(":")[1]; 
//   
//   final String dbURL = JDBC_POSTGRE + dbURI.getHost() + ":" + dbURI.getPort() + dbURI.getPath(); 

     // return DriverManager.getConnection(dbURL,userName,userPassword); 

     return DriverManager.getConnection(dbUrl); 


     } 

    } 

이 시간 내 주셔서 감사 Heroku가 데이터베이스에 연결을 시도 내 Test.java입니다!

+0

성공적으로 드라이버 클래스를'로드 Class.forName'나요? –

답변

1

먼저 공개적으로 게시 했으므로 데이터베이스 자격증 명을 재설정해야합니다. 다음 명령을 실행하십시오 :

heroku pg:credentials DATABASE --reset 

오류 메시지는 클래스 경로에 Postgres JDBC 드라이버가 없다는 것을 나타냅니다.

postgresql-9.4.1211.jre6.jar 거의 확실하게 원하는 JAR이 아닙니다. Java 6입니다. 외부 종속성을 원하지 않습니다. 당신의 pom.xml에서

,이 있어야한다 :

<dependency> 
    <groupId>org.postgresql</groupId> 
    <artifactId>postgresql</artifactId> 
    <version>9.4-1211</version> 
</dependency> 
관련 문제