2014-03-07 16 views
32

Es scheint, dass PostgreSQL das Erstellen einer Datenbanktabelle mit dem Namen 'user' nicht zulässt. Aber MySQL wird es erlauben, eine solche Tabelle zu erstellen.In PostgreSQL kann keine Datenbanktabelle namens 'user' erstellt werden

Ist das, weil es ein Schlüsselwort ist? Aber Hibernate kann kein Problem identifizieren (selbst wenn wir PostgreSQLDialect einstellen).

+2

Ja, Benutzer ein reserviertes Schlüsselwort Verwenden Sie es nicht als Tabellenname. http://www.postgresql.org/docs/9.3/static/sql-keywords-appendix.html –

+0

Sie können eine Tabelle namens "Benutzer" auf PostgreSQL erstellen. Aber ich rate Ihnen, die Verwendung von Tabelle/Spalte/Variablen ... Namen mit Token Keywords – Houari

+0

Sorry das ist keine doppelte Frage. Frage ist über Postgresql nicht über etwas mit MySql. Vielen Dank. – Channa

Antwort

62

user ist ein reserviertes Wort und es ist normalerweise keine gute Idee, reservierte Wörter für Bezeichner (Tabellen, Spalten) zu verwenden.

Wenn Sie darauf bestehen, tun, dass Sie den Tabellennamen in doppelte Anführungszeichen setzen haben:

create table "user" (...); 

Aber Sie dann immer müssen doppelte Anführungszeichen verwenden, wenn die Tabelle referenzieren. Außerdem wird bei dem Tabellennamen zwischen Groß- und Kleinschreibung unterschieden. "user" ist ein anderer Tabellenname als .

Wenn Sie sich eine Menge Ärger sparen möchten, verwenden Sie einen anderen Namen. users, user_account, ...

Weitere Details zu Bezeichnern finden Sie im Handbuch zu finden: Es ist http://www.postgresql.org/docs/current/static/sql-syntax-lexical.html#SQL-SYNTAX-IDENTIFIERS

5

möglich Tabellennamen mit JPA mit folgenden Syntax angeben:

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

'@Tabelle (Name =" \ 'Benutzer \" ") funktioniert auch. –

+0

@ Jan Wytze Ich denke, dass es für MySQL funktioniert. – mnv

Verwandte Themen