当前位置: 首页 > 知识库问答 >
问题:

语句回调;仅当部署到Heroku时,SQL语法错误

薛望
2023-03-14

我创建了使用jdbctemplate的spring boot应用程序,在localhost上一切都很好,但当我将应用程序部署到Heroku并访问endpoint时,我得到了以下信息:

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);
}

共有3个答案

万嘉熙
2023-03-14

您需要使用https://devcenter.heroku.com/articles/running-database-migrations-for-java-apps中描述的迁移框架创建表

松昱
2023-03-14

我认为您应该在应用程序中输入模式名称。属性文件,如下所示:

spring.jpa.properties.hibernate.default_schema=public

这样写你的问题:

SELECT id, name, price, image, description FROM products;

资料来源:这个答案和这个答案

汤洋
2023-03-14

好的,我修好了。

Heroku添加了它自己的配置到我的项目出于某种原因(插件与postgresql)和它使用的数据库从设置-

我在Heroku CLI中使用这个答案中的命令从我的应用程序中删除heroku数据库。

 类似资料:
  • 问题内容: 好的,我有一个非常简单的mysql数据库,但是当我尝试通过mysql-admin运行此查询时,出现奇怪的错误 INSERT INTO自定义报告(研究,类型,模式,选择,描述)VALUES(‘1’,‘2’,‘3’,‘4’,‘5’); 错误: 1064-您的SQL语法有误;检查与您的MySQL服务器版本相对应的手册以获取正确的语法,以便在“选择,描述” VALUES(“ 1”,“ 2”,“

  • 我在尝试使用flyway和hibernate为PostgresSql创建表时遇到语法错误的问题。Trip类与其他类没有关系(还没有)。我已经成功地为其他两个类创建了购买和用户,但是这个只是给出了错误。 错误信息: [错误]测试运行:1,失败:0,错误:1,跳过:0,所用时间:3.003秒 SQL状态:42000错误代码:42000消息:SQL语句“CREATE TABLE TRIP(ID BIGI

  • 错误消息: [错误]运行得测试:1,失败:0,错误:1,跳过得:0,运行得时间:3.003s<<<失败!-在org.studentnr.backend.service.userserviceTest[错误]org.studentnr.backend.service.userserviceTest.testCreateUser所用时间:0.004s<<<错误!java.lang.IllegalSta

  • 本文向大家介绍C#调用SQL语句时乘号的用法,包括了C#调用SQL语句时乘号的用法的使用技巧和注意事项,需要的朋友参考一下 一般来说,在ADO中,我们需要在SQL语句中使用乘法运算,可是添加'*'以后执行程序总是会出错,这是因为‘*'与sql中的‘*'关键字重合了,因此编译就会出错。 解决办法为:将乘法运算放到sql语句外面,将结果放入一个变量中,然后在sql语句中引用即可。 如下示例所示: 希望

  • 我已经将我的flask web应用程序部署到Heroku,Heroku最初使用的是SQLite本地数据库,我的所有命令都可以正常工作。现在,当我部署到Heroku并使用PostgreSQL数据库时,我会遇到一些语法和编程错误,如上图所示。我没有在本地得到这些错误,现在当我部署之后,我得到了这些错误。请告知,我的代码如下: