繁体   English   中英

尝试使用JDBC连接Heroku数据库时找不到合适的驱动程序

[英]No suitable driver found on attempt to connect Heroku Database using JDBC

我正在尝试将我在Heroku中部署的Web应用程序与它提供的postgre数据库连接起来。

我按照本网站提供的说明部署了我的应用程序,但它抛出了以下错误消息

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

我尝试了这里这里给出的建议,但没有奏效。 我还在我postgresql-9.4.1211.jre6.jar添加了postgresql-9.4.1211.jre6.jar作为外部postgresql-9.4.1211.jre6.jar

以下是我的Test.java ,它接收GET请求并尝试连接到Heroku数据库

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 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>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM