2012-09-14 16 views
36

que estoy tratando de hacer una inserción sencilla en una mesa de postgres, pero estoy recibiendo un error que el valor que estoy tratando de insertar se interpreta como nombre de columnano puede conseguir sencilla inserción de PostgreSQL para trabajar

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

Donde ID está configurado para ser la clave principal, e incremento automático, y no nulo. Esas son las casillas que marqué cuando configuré la tabla en phpPgAdmin.

que estoy recibiendo este error sin embargo:

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

He puesto mi nombre de tabla entre comillas dobles, como he leído here que debería.

Y usó DEFAULT para auto-incrementar la identificación como he leído here Yo debería.

¿Alguna idea? Gracias!

+7

uso de comillas simples para 'distribuidor automático'. – muratgu

+0

Comillas simples. Deje la identificación. –

+0

@muratgu que da el error: 'ERROR: ERROR: error de sintaxis en o cerca de '' imageTagBusinessMainCategory '" Posición: 13' – 1252748

Respuesta

80

Use 'auto dealer' en su lugar. PostgreSQL interpreta " como comillas para identificadores, ' como comillas para cadenas.

también:

  • Si se trata de un nuevo proyecto, simplemente no usar tablas de casos mixtos; es una fuente de frustración más tarde. En lugar de poder usar cualquier caso en sus declaraciones SQL, ambos deben citar el nombre del identificador y obtener el caso correcto.

  • No hay necesidad de especificar id/DEFAULT, estás pidiéndole que haga lo que habría hecho ya. No he encontrado un DBMS que requiera que incluya columnName/DEFAULT si desea que ponga el valor predeterminado en la columna, por lo que no creo que este par adicional de KV vaya a hacer que lo que está sucediendo sea más claro cualquiera que lea tu código más tarde.

+0

que me da este error 'error: Error: la columna "businessmaincategory" de relación "imageTagBusinessMainCategory" no exist' – 1252748

+1

Probablemente creó la columna en mayúsculas y minúsculas, al igual que el nombre de la tabla. También debe citar el nombre de la columna si este es el caso. Deje de usar casos mixtos para nombrar, y les ahorrará a todos mucho dolor. – Matt

+0

cambiado de caja mixta. ¡Funciona genial! ¡Gracias! – 1252748

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

EDIT: Añadido comillas dobles alrededor del nombre de la columna

+1

Hola, gracias. que da este error: 'ERROR: ERROR: columna" businessmaincategory "de la relación" imageTagBusinessMainCategory " no existe' – 1252748

+0

Suena como si necesitaras poner el nombre de la columna entre comillas dobles también. Una razón por la que los nombres de tablas de casos combinados en PostgreSQL son una mala idea. –

+0

@DavidFaber, sí, tienes razón. hace que sea un poco difícil de leer aunque ... ¿puedo usar guiones? ^^ – 1252748

0

Postgres, Oracle, etc esperan que el nombre de la columna sea entre comillas si se han mezclado caso. Así que, o crear una convención de todos los pequeños o todas las tapas de las columnas de tabla o las cotizaciones uso como David Faber sugirió

INSERT INTO "imageTagBusinessMainCategory" 
("businessMainCategory") 
VALUES 
('auto dealer') 
Cuestiones relacionadas