2012-09-14 17 views
36

Sto cercando di fare un semplice inserimento in una tabella postgres, ma sto ottenendo un errore che il valore che sto cercando di inserire viene interpretato come un nome di colonnanon è possibile ottenere inserto semplice PostgreSQL di lavorare

INSERT INTO "imageTagBusinessMainCategory" 
(id, businessMainCategory) 
VALUES 
(DEFAULT, "auto dealer") 

Dove id è impostato come chiave primaria e incremento automatico e non null. Quelle sono le caselle che ho spuntato quando ho impostato il tavolo in phpPgAdmin.

che sto ricevendo questo errore però:

ERROR: ERROR: column "auto dealer" does not exist 
Query = INSERT 
INTO "imageTagBusinessMainCategory" 
(id, businessMainCategory) 
VALUES 
(DEFAULT, 
"auto dealer") 

ho messo il mio nome della tabella tra virgolette, come ho letto here dovrei.

E utilizzato DEFAULT per incrementare automaticamente l'ID come ho letto here che dovrei.

Qualche idea? Grazie!

+7

uso per 'commerciante auto'. – muratgu

+0

Citazioni singole. Lascia fuori l'id. –

+0

@muratgu che restituisce l'errore: 'ERRORE: ERRORE: errore di sintassi in corrispondenza di" 'imageTagBusinessMainCategory' " Posizione: 13' – 1252748

risposta

80

Utilizzare invece 'auto dealer'. PostgreSQL interpreta " come virgolette per identificatori, ' come virgolette per stringhe.

anche:

  • Se questo è un nuovo progetto, solo che non utilizzare le tabelle di casi misti; è una fonte di frustrazione successiva a . Invece di essere in grado di utilizzare qualsiasi caso in le istruzioni SQL, è necessario sia citare il nome dell'identificatore e ottenere il caso corretto.

  • Non è necessario specificare id/DEFAULT, sei chiedendo di fare quello che avrebbe fatto già. Non ho incontrato un DBMS che richiede di includere columnName/DEFAULT se si desidera che il valore predefinito nella colonna sia , quindi non penso che questa coppia KV aggiuntiva renderà più chiaro ciò che accade chiunque stia leggendo il codice in seguito.

+0

che mi dà questo errore 'ERRORE: ERRORE: colonna" businessmaincategory "di relazione" imageTagBusinessMainCategory " non esiste' – 1252748

+1

Probabilmente hai creato la colonna in lettere maiuscole, proprio come il nome della tabella. È inoltre necessario citare il nome della colonna, se questo è il caso. Smetti di usare casi misti nella denominazione e risparmierai un sacco di dolore a tutti. – Matt

+0

cambiato da caso misto. funziona alla grande! Grazie! – 1252748

5
INSERT INTO "imageTagBusinessMainCategory" 
("businessMainCategory") 
VALUES 
('auto dealer') 

EDIT: Aggiunto virgolette intorno al nome della colonna

+1

Ciao, grazie. che dà questo errore: 'ERRORE: ERRORE: colonna" businessmaincategory "di relazione" imageTagBusinessMainCategory " non esiste' – 1252748

+0

Sembra che sia necessario inserire il nome della colonna tra virgolette. Una delle ragioni per cui i nomi delle tabelle a caratteri misti in PostgreSQL sono una cattiva idea. –

+0

@DavidFaber sì, hai ragione. lo rende un po 'difficile da leggere ... posso usare i trattini? ^^ – 1252748

0

Postgres, Oracle ecc aspettano il nome della colonna di essere tra virgolette se sono maiuscole e minuscole. Quindi, o creare una convenzione di tutte le piccole o di tutti i tappi per le colonne della tabella o utilizzare le virgolette come David Faber suggerito apici

INSERT INTO "imageTagBusinessMainCategory" 
("businessMainCategory") 
VALUES 
('auto dealer') 
Problemi correlati