2013-04-07 24 views
6

Ermitteln eines Operatorkonfliktfehlers bei einer einfachen Abfrage. Was verursacht das?PostgreSQL-Fehler: Operator existiert nicht: name = integer

 
dev_db=# `select * from registrants where user=1;` 
ERROR: operator does not exist: name = integer 
LINE 1: select * from registrants where user=1; 
              ^
HINT: No operator matches the given name and argument type(s). You might need to add explicit type casts. 

Tabellendefinition:

 
dev_db=# \d+ registrants 
           Table "public.registrants" 
    Column |   Type   |  Modifiers  | Storage | Description 
--------------+--------------------------+--------------------+----------+------------- 
user   | integer     | not null   | plain | 
degree  | text      |     | extended | 
title  | text      |     | extended | 
organization | text      |     | extended | 
address  | text      |     | extended | 
city   | text      |     | extended | 

Indexes: 
    "registrants_pkey" PRIMARY KEY, btree ("user") 
Foreign-key constraints: 
    "registrants_country_fkey" FOREIGN KEY (country) REFERENCES countries(id) 
    "registrants_user_fkey" FOREIGN KEY ("user") REFERENCES users(id) 
Referenced by: 
    TABLE "class_evaluations" CONSTRAINT "class_evaluations_registrant_fkey" FOREIGN KEY (registrant) REFERENCES registrants("user") 

Triggers: 
    archive_registrants BEFORE DELETE OR UPDATE ON registrants FOR EACH ROW EXECUTE PROCEDURE archive_reg_table() 
Has OIDs: no 

Antwort

7

Laut Handbuch ist USER ein reserviertes Schlüsselwort. Sie müssen es angeben, um den Syntaxfehler zu vermeiden.

SELECT * FROM registrants WHERE "user" = 1 

PostgreSQL Reserved Keyword List

Wenn Sie Zeit haben, die Datenbank, ändern Sie die Spaltennamen ein, der nicht ein reserviertes Schlüsselwort ist zu ändern. Dies wird Ihnen helfen, zukünftige Kopfschmerzen zu vermeiden.

+3

@ user2254435: Verwenden Sie keine reservierten Wörter als Kennungen zu Beginn. –

+0

Vielen Dank für die schnelle Antwort. Dies ist von einer großen bestehenden Anwendung und nicht so einfach zu ändern. – DevR

Verwandte Themen