PostgreSQLで「user」という名前のデータベーステーブルを作成できません
PostgreSQLでは、「user」という名前のデータベーステーブルを作成できないようです。ただし、MySQLではこのようなテーブルを作成できます。
それはキーワードだからですか?ただし、Hibernateは問題を特定できません(PostgreSQLDialectを設定しても)。
user
は予約語であり、通常、識別子(テーブル、列)に予約語を使用することはお勧めできません。
そのことを主張する場合は、テーブル名を二重引用符で囲む必要があります。
create table "user" (...);
ただし、テーブルを参照するときは、always二重引用符を使用する必要があります。さらに、テーブル名では大文字と小文字が区別されます。 "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を使用しているため。この方が簡単だと思いました。この小さな修正が他の誰かを助けることを願っています。