스키마 유효성 검사: 테이블 [게임] 누락
저는 이것이 중복될 수도 있다고 생각합니다.스키마 유효성 검사: 테이블 [hibernate_sequences]이(가) 누락되었지만 알 수 없습니다.
그래서 내 안에서application.properties
파일 다음 옵션이 있습니다.spring.jpa.hibernate.ddl-auto=validate
다음 오류가 표시됩니다.
Schema-validation: missing table [game]
이 메시지가 표시되는 이유는 무엇입니까?
여기 내꺼Game
클래스와User
클래스:
게임:
@Entity
public class Game {
@Id
@Column(name = "GAME_NUMBER")
@GeneratedValue(strategy = GenerationType.SEQUENCE)
private long gameNumber;
private int playerScore;
private int NPCScore;
private Date datetime;
@ManyToOne
@JoinColumn(name="USER_ID")
private User user;
public Game() {}
public Game(int playerScore, int nPCScore, Date datetime) {
super();
this.playerScore = playerScore;
this.NPCScore = nPCScore;
this.datetime = datetime;
}
public User getUser() {
return user;
}
} + getters & setters
사용자:
@Entity
public class User {
@Id
@Column(name = "USER_ID")
@GeneratedValue(strategy = GenerationType.SEQUENCE)
private long userId;
private String username;
private String password;
@OneToMany(mappedBy="user",cascade=CascadeType.ALL)
private List<Game> games;
@ElementCollection
private List<Date> startSessions;
public User() {}
public User(String username, String password, List<Game> games, List<Date> startSessions) {
super();
this.username = username;
this.password = password;
this.games = games;
this.startSessions = startSessions;
}
}
validate
엔티티가 대상에 대해 완벽하게 호환되는지 확인합니다.어쨌든, 유효성을 검사하려는 데이터베이스에는 다음 테이블이 없습니다.game
엔티티를 저장할 수 있습니다.
이 대답은 무엇에 대해 더 자세히 설명합니다.validate
한다.
최대 절전 모드 - 최대 절전 모드.hbm2dl.auto = 유효성 검사
구체적으로,
테이블, 열, ID 생성기의 존재를 확인합니다.
데이터베이스/기대 사항을 모르면(데이터베이스가 만들어질 것으로 예상하십니까, Flyway/Lequibase를 사용하여 데이터베이스를 작성/업데이트하는 등)그렇다면 대답할 수 없습니다.validate
사용 사례에 적합합니다.
시도해 볼 수 있습니다.create-drop
시작/시작 시 테이블을 만들고 삭제하지만 데이터베이스에 대한 프로덕션 제어를 위한 솔루션은 아닙니다.
Hibernate 5.4.0으로 변경했을 때와 동일한 결과를 얻었습니다.Final. Hibernate가 갑자기 기본 스키마를 인식하지 못하거나 드라이버가 스키마를 제대로 반환하지 않습니다.테이블 정의에 스키마 정의를 추가하여 우회할 수 있었습니다.
@Table(name = "GAME", schema = "PUBLIC")
또는 persistence.xml에 기본 스키마를 추가합니다.
<property name="hibernate.default_schema" value="PUBLIC" />
사용 권한: GRANT 선택, 삽입, 업데이트, 삭제, ON table_name To usr_name 변경;
이 오류는 플라이웨이 DB와 함께 스프링 부트를 사용하는 동안 발생할 수 있습니다.이 문제는 플라이웨이에서 사용된 스크립트 파일의 잘못된 명명 규칙 때문일 수 있습니다.DB.
https://flywaydb.org/documentation/migrations#naming
SQL 표준에서는 이름을 대문자로 저장해야 합니다.테이블/필드의 이름을 소문자로 지정한 경우 - JPA는 대소문자를 대문자로 자동 변환하고 이 경우 이름을 검색하려고 하지만 소문자로 로그에 기록합니다.¯\_(ツ)_/¯
application.yml에 추가합니다.
spring:
jpa:
properties:
hibernate:
default_schema: game
최대 절전 모드 버전 5.6.9, 대/소문자 구분 구현:
hibernate:
physical_naming_strategy: 'org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl'
2023년에 이곳에 오신 분들을 위해 다음과 같은 내용을 추가하여 문제를 해결했습니다.spring.jpa.properties.hibernate.default_schema = dbName
내 application.properties는 다음과 같습니다.
spring.datasource.url=jdbc:postgresql://localhost:5432/dbName
spring.datasource.username=//your username
spring.datasource.password=//your password
spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.PostgreSQLDialect
spring.jpa.hibernate.ddl-auto= validate
spring.jpa.properties.hibernate.jdbc.time_zone = UTC
spring.jpa.properties.hibernate.default_schema = dbName
#flyway configuration
spring.flyway.user = //your username
spring.flyway.password = //your password
spring.flyway.defaultSchema = dbName
#SHOW-SQL
spring.jpa.properties.hibernate.show_sql = true
언급URL : https://stackoverflow.com/questions/44479406/schema-validation-missing-table-game
'programing' 카테고리의 다른 글
표 행에서 slideDown(또는 표시) 기능을 사용하는 방법은 무엇입니까? (0) | 2023.08.15 |
---|---|
어셈블리(ASP)의 웹 응용 프로그램 버전 번호 사용.NET/C#) (0) | 2023.08.15 |
Serilog가 MariaDb 데이터베이스에 로깅되지 않음 (0) | 2023.08.10 |
한 문자열에 대한 문자열 목록 (0) | 2023.08.10 |
CSS3를 사용한 SVG 드롭 섀도우 (0) | 2023.08.10 |