我已经创建了使用jdbctemplate的spring-boot应用程序,一切在localhost上都运行良好,但是当我将应用程序部署到Heroku并访问端点时,我会得到以下信息:
StatementCallback; bad SQL grammar [SELECT id, name, price, image, description FROM products;]; nested exception is org.postgresql.util.PSQLException: ERROR: relation "products" does not exist Position: 49
如果SQL查询错误,那么同一应用程序在本地计算机上怎么可能?
这是我正在使用的jdbcTemplate方法:
public Products getProductsList() {
ArrayList<Product> productsList = new ArrayList<>();
jdbcTemplate.query(
"SELECT id, name, price, image, description FROM public.products;",
(rs, rowNum) -> new Product(rs.getInt("id"), rs.getString("name"), rs.getFloat("price"), rs.getString("image"), rs.getString("description"))
).forEach(product -> productsList.add(product));
return new Products(productsList);
}
答案 0 :(得分:0)
我认为您应该像这样将架构名称放在 application.properties 文件中:
spring.jpa.properties.hibernate.default_schema=public
然后像这样编写查询:
SELECT id, name, price, image, description FROM products;
答案 1 :(得分:0)
答案 2 :(得分:0)
好的,我修好了。
Heroku出于某种原因(与Postgresql一起添加)将自己的配置添加到了我的项目中,并且它使用了settings-> config vars-> DATABASE_URL中的数据库,而不是application.properties中的数据库。
I used command from this answer在Heroku CLI中从我的应用程序中删除heroku数据库。