【问题标题】:o.h.engine.jdbc.spi.SqlExceptionHelper : ERROR: relation "sessions" does not existo.h.engine.jdbc.spi.SqlExceptionHelper:错误:关系“会话”不存在
【发布时间】:2022-01-03 22:04:47
【问题描述】:

我试图使用 Spring Framework 运行 API。在处理它时,当我尝试运行端点时,我收到了上述错误消息。 下面是我尝试在 Postman 上测试的课程。我在其中使用了 PostgreSQL 数据库中的 sessions

package com.pluralsight.conferencedemo.models;


import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import javax.persistence.*;
import java.util.List;

@Entity(name="sessions")
@JsonIgnoreProperties({"hibernateLazyInitializer","handler"})
public class Session {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long session_id;
    private String session_name;
    private String session_description;
    private Integer session_length;

    @ManyToMany
    @JoinTable(
            name="session_speakers",
            joinColumns = @JoinColumn(name = "session_id"),
            inverseJoinColumns = @JoinColumn(name= "speaker_id"))
    private List<Speaker> speakers;

    public Session(){

    }

    public List<Speaker> getSpeakers() {
        return speakers;
    }

    public void setSpeakers(List<Speaker> speakers) {
        this.speakers = speakers;
    }

    public Long getSession_id() {
        return session_id;
    }

    public void setSession_id(Long session_id) {
        this.session_id = session_id;
    }

    public String getSession_name() {
        return session_name;
    }

    public void setSession_name(String session_name) {
        this.session_name = session_name;
    }

    public String getSession_description() {
        return session_description;
    }

    public void setSession_description(String session_description) {
        this.session_description = session_description;
    }

    public Integer getSession_length() {
        return session_length;
    }

    public void setSession_length(Integer session_length) {
        this.session_length = session_length;
    }
}

我在 Postman 中收到的错误消息是

{
    "timestamp": "2022-01-03T21:28:36.793+00:00",
    "status": 500,
    "error": "Internal Server Error",
    "path": "/api/v1/sessions"
}

当我尝试来自 Postman 的 GET 请求时,IntelliJ 中的错误消息是:

2022-01-04 02:58:36.695  WARN 10200 --- [nio-8080-exec-2] o.h.engine.jdbc.spi.SqlExceptionHelper   : SQL Error: 0, SQLState: 42P01
2022-01-04 02:58:36.695 ERROR 10200 --- [nio-8080-exec-2] o.h.engine.jdbc.spi.SqlExceptionHelper   : ERROR: relation "sessions" does not exist
  Position: 179
2022-01-04 02:58:36.758 ERROR 10200 --- [nio-8080-exec-2] o.a.c.c.C.[.[.[/].[dispatcherServlet]    : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is org.springframework.dao.InvalidDataAccessResourceUsageException: could not extract ResultSet; SQL [n/a]; nested exception is org.hibernate.exception.SQLGrammarException: could not extract ResultSet] with root cause

org.postgresql.util.PSQLException: ERROR: relation "sessions" does not exist

【问题讨论】:

    标签: java postgresql spring-boot rest spring-framework-beans


    【解决方案1】:

    这看起来与我最近完成的 Spring Boot 教程非常相似。要确保的一件事是该表已经存在于数据库模式中。模型的设置方式在运行 api 时不会自动在数据库中创建表。

    要检查的另一件事是您的 application.properties 设置。 “spring.datasource.url”选项应该设置为它正在寻找的正确数据库。即:“jdbc:postgresql://localhost:xxxx/app_name” 其中 app_name 是您命名数据库的名称,xxxx 是端口。

    我在会话和演讲者的多对多关系中遇到了类似的问题,罪魁祸首是数据库中缺少表。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-18
      • 2019-10-26
      • 2018-07-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多