与Heroku的Java JDBC连接

与Heroku的Java JDBC连接,java,postgresql,heroku,jdbc,Java,Postgresql,Heroku,Jdbc,我正在尝试在Heroku上创建一个Java Web应用程序。将应用程序连接到Heroku数据库时,我遇到了一个问题: org.postgresql.util.PSQLException:错误:关系“sc_用户”不存在 连接部分为: URI dbUri = new URI(System.getenv("DATABASE_URL")); String dbUrl = "jdbc:postgresql://" + dbUri.getHost() + dbUri.getPath(); BasicDat

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

连接部分为:

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仪表板上看到,池中使用了3个连接,但最后一行抛出异常,表示无关系SCU用户


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

尝试用引号分隔表名

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

尝试用引号分隔表名

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

当您在postgres中创建带有大写字母的列时,DBMS在
“SC\u User”
si之间使用它,如果您的列是大写字母,则必须使用:

stmt.executeQuery("SELECT * FROM \"SC_User\""); 
//--------------------------------^--------^
否则,您必须使用正确的名称和小写字母

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

请在此处阅读更多信息:

当您在postgres中创建带有大写字母的列时,DBMS在
“SC\u User”
si之间使用它,如果您的列是大写字母,则必须使用:

stmt.executeQuery("SELECT * FROM \"SC_User\""); 
//--------------------------------^--------^
否则,您必须使用正确的名称和小写字母

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

请在此处阅读更多信息: