[postgresql] PostgreSQL에서 ‘user’라는 데이터베이스 테이블을 만들 수 없습니다.

PostgreSQL은 ‘user’라는 데이터베이스 테이블 생성을 허용하지 않는 것 같습니다. 그러나 MySQL은 이러한 테이블을 생성 할 수 있습니다.

그것은 키워드이기 때문입니까? 그러나 Hibernate는 어떤 문제도 식별 할 수 없습니다 (PostgreSQLDialect를 설정하더라도).



답변

user 예약어이며 일반적으로 식별자 (테이블, 열)에 예약어를 사용하는 것은 좋지 않습니다.

그렇게 고집한다면 테이블 이름을 큰 따옴표로 묶어야합니다.

create table "user" (...);

그러나 테이블을 참조 할 때 항상 큰 따옴표를 사용해야합니다. 또한 테이블 이름은 대소 문자를 구분합니다. "user"과 다른 테이블 이름 "User"입니다.

많은 어려움을 겪고 싶다면 다른 이름을 사용하십시오. users,, user_account

인용 식별자에 대한 자세한 내용은 http://www.postgresql.org/docs/current/static/sql-syntax-lexical.html#SQL-SYNTAX-IDENTIFIERS 설명서에서 확인할 수 있습니다 .


답변

다음 구문으로 JPA로 테이블 이름을 지정할 수 있습니다.

@Table(name="\"user\"")


답변

같은 문제가 얼마 전에 있었는데 테이블 이름을 user에서 app_user. Hibernate / JPA 사용으로 인해. 이 방법이 더 쉬울 것이라고 생각했습니다. 이 작은 수정이 다른 사람에게 도움이되기를 바랍니다.


답변

user다른 스키마에서 테이블 을 만들 수 있습니다 public. 예 :

CREATE SCHEMA my_schema;
CREATE TABLE my_schema.user(...);


답변