【问题标题】:Java JDBC Connection with Heroku与 Heroku 的 Java JDBC 连接
【发布时间】:2017-10-10 21:39:40
【问题描述】:

我正在尝试在 Heroku 上创建一个 Java Web 应用程序。将应用程序连接到 Heroku 数据库时,我遇到了一个问题: org.postgresql.util.PSQLException:错误:关系“sc_user”不存在

连接部分是:

URI dbUri = new URI(System.getenv("DATABASE_URL"));
String dbUrl = "jdbc:postgresql://" + dbUri.getHost() + dbUri.getPath();

BasicDataSource connectionPool = new BasicDataSource();

if (dbUri.getUserInfo() != null) {
    connectionPool.setUsername(dbUri.getUserInfo().split(":")[0]);
    connectionPool.setPassword(dbUri.getUserInfo().split(":")[1]);
}
connectionPool.setDriverClassName("org.postgresql.Driver");
connectionPool.setUrl(dbUrl);
connectionPool.setInitialSize(3);

Connection conn = connectionPool.getConnection();
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("SELECT * FROM SC_User");

我在 Heroku Dashboard 上看到池中使用了 3 个连接,但最后一行抛出异常说没有关系 sc_user。

我使用附加工具 Adminium 创建了表,命令中是否缺少某些内容?感谢您的帮助!

【问题讨论】:

    标签: java postgresql heroku jdbc


    【解决方案1】:

    尝试用引号分隔表名

    ResultSet rs = stmt.executeQuery("SELECT * FROM \"SC_User\"");
    

    【讨论】:

      【解决方案2】:

      当您在 postgres 中使用大写字母创建列时,DBMS 在"SC_User" si 之间使用它,以防您的列是大写字母,您必须使用:

      stmt.executeQuery("SELECT * FROM \"SC_User\""); 
      //--------------------------------^--------^
      

      否则你必须使用正确的小写名称

      stmt.executeQuery("SELECT * FROM sc_user");
      //---------------------------------^^
      

      在此处阅读更多相关信息: Cannot query Postgres database that has column names with capital letters

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-10-10
        • 2018-10-29
        • 1970-01-01
        • 2014-03-31
        • 2012-04-26
        • 2015-08-14
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多