2014-01-29 6 views
6

Ich bin neu auf Postgresql und ich kann nicht scheinen, es zu einem Tisch fallen zu lassen.Kann nicht eine Tabelle in Postgres fallen

db_dev=# \dt 
      List of relations 
Schema | Name  | Type | Owner 
--------+-------------+-------+------- 
public | DataSources | table | ted 
public | Emails  | table | ted 
public | Users  | table | ted 
(3 rows) 

Wenn ich versuche, die Benutzer-Tabelle gibt es einen Fehler zu löschen:

db_dev=# drop table Users; 
ERROR: table "users" does not exist 

Was mache ich falsch?

+0

haben Sie versucht, public.users zu löschen? – imran

+0

meinst du 'drop table public.Users;'? - das gab das gleiche 'FEHLER: Tabelle" Benutzer "existiert nicht –

Antwort

18

Das Problem ist, dass Ihre Benutzer Tabelle gemischte Groß-/Kleinschreibung ist (und Objektnamen in Postgres Groß-und Kleinschreibung beachten). Ohne Anführungszeichen um den Tabellennamen wird Postgres den angegebenen Namen auf "Benutzer" falten - was nicht existiert. Ihre Lösung, den Tabellennamen zu zitieren, funktioniert nicht, weil Benutzer ein reservierter Name ist, sondern weil Sie Postgre anweisen, die Tabelle "Benutzer" und nicht die Tabelle "Benutzer" zu löschen.

3

Es scheint, dass Sie es richtig machen, aber Sie können dies zu tun versuchen:

DROP TABLE IF EXISTS Users; 

oder dieses:

DROP TABLE IF EXISTS Public.Users; 

Wenn gelöscht werden existiert, und wenn Sie nicht wissen, existiert .

+0

Der Tabellenname ist gemischter Fall, Sie müssen ihn zitieren. – gsiems

+0

Ich weiß nicht in anderen dbms, aber es PostgreSQL Sie brauchen nicht zitiert den Tabellennamen (nur getestet) – carexcer

+0

Nicht, wenn der Tabellenname gemischt/Großbuchstaben mit dem Namen in Anführungszeichen erstellt wurde. Versuchen Sie 'create table" Users ", indem Sie current_user als Benutzernamen auswählen;' und sehen Sie, wie gut 'drop table users;' funktioniert. – gsiems

Verwandte Themen