web-dev-qa-db-ja.com

PostgreSQLで「user」という名前のデータベーステーブルを作成できません

PostgreSQLでは、「user」という名前のデータベーステーブルを作成できないようです。ただし、MySQLではこのようなテーブルを作成できます。

それはキーワードだからですか?ただし、Hibernateは問題を特定できません(PostgreSQLDialectを設定しても)。

64
Channa

userは予約語であり、通常、識別子(テーブル、列)に予約語を使用することはお勧めできません。

そのことを主張する場合は、テーブル名を二重引用符で囲む必要があります。

create table "user" (...);

ただし、テーブルを参照するときは、always二重引用符を使用する必要があります。さらに、テーブル名では大文字と小文字が区別されます。 "user"は、"User"とは異なるテーブル名です。

自分で多くのトラブルを避けたい場合は、別の名前を使用してください。 usersuser_account、...

引用識別子の詳細については、マニュアルをご覧ください。 http://www.postgresql.org/docs/current/static/sql-syntax-lexical.html#SQL-SYNTAX-IDENTIFIERS

106

次の構文を使用して、JPAでテーブル名を指定することができます。

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

この問題は以前にもありましたが、テーブル名をuserからapp_userに変更しました。 Hibernate/JPAを使用しているため。この方が簡単だと思いました。この小さな修正が他の誰かを助けることを願っています。

2
Sergio A.