Estoy tratando de hacer una inserción simple en una tabla de postgres, pero obtengo un error de que el valor que estoy tratando de insertar se está interpretando como un nombre de columna
INSERT INTO "imageTagBusinessMainCategory"
(id, businessMainCategory)
VALUES
(DEFAULT, "auto dealer")
Donde id está configurado para ser la clave principal y auto incremento, y no nulo. Esas son las casillas que marqué cuando configuré la tabla en phpPgAdmin.
Sin embargo, recibo este error:
ERROR: ERROR: column "auto dealer" does not exist
Query = INSERT
INTO "imageTagBusinessMainCategory"
(id, businessMainCategory)
VALUES
(DEFAULT,
"auto dealer")
He puesto el nombre de mi tabla entre comillas dobles, como he leído aquí , debería hacerlo.
Y solía DEFAULT
incrementar automáticamente la identificación como he leído aquí .
¿Algunas ideas? ¡Gracias!
sql
postgresql
1252748
fuente
fuente
ERROR: ERROR: syntax error at or near "'imageTagBusinessMainCategory'" Position: 13
Respuestas:
Úselo en su
'auto dealer'
lugar. PostgreSQL se interpreta"
como comillas para identificadores,'
como comillas para cadenas.También:
Si se trata de un proyecto nuevo, no utilice tablas de casos mixtos; es una fuente de frustración más adelante. En lugar de poder usar cualquier caso en sus declaraciones SQL, debe citar el nombre del identificador y obtener el caso correcto.
No es necesario especificar
id
/DEFAULT
, le está pidiendo que haga lo que ya habría hecho. No he conocido un DBMS que requiera que incluyacolumnName
/DEFAULT
si desea que ponga el valor predeterminado en la columna, por lo que no creo que este par KV adicional aclare lo que está sucediendo para cualquiera que lea su código más adelante. .fuente
ERROR: ERROR: column "businessmaincategory" of relation "imageTagBusinessMainCategory" does not exist
INSERT INTO "imageTagBusinessMainCategory" ("businessMainCategory") VALUES ('auto dealer')
EDITAR: se agregaron comillas dobles alrededor del nombre de la columna
fuente
ERROR: ERROR: column "businessmaincategory" of relation "imageTagBusinessMainCategory" does not exist
thishasareallylongname
se puede acceder a la tabla nombrada usandoselect * from thisHasAReallyLongName
.Postgres, Oracle, etc. esperan que el nombre de la columna esté entre comillas si tienen mayúsculas y minúsculas. Por lo tanto, cree una convención de todo en mayúsculas o minúsculas para las columnas de su tabla o use comillas como sugirió David Faber
INSERT INTO "imageTagBusinessMainCategory" ("businessMainCategory") VALUES ('auto dealer')
fuente