Saltar al contenido

La columna de PostgreSQL ‘foo’ no existe

Te damos la respuesta a este atascamiento, al menos eso creemos. Si tienes inquietudes dínoslo, que con gusto te ayudaremos

Solución:

Accidentalmente creó el nombre de la columna con un espacio final y presumiblemente phpPGadmin creó el nombre de la columna con comillas dobles alrededor:

create table your_table (
    "foo " -- ...
)

Eso le daría una columna que parece que se llama foo en todas partes, pero tendría que comillas dobles e incluir el espacio cada vez que lo use:

select ... from your_table where "foo " is not null

La mejor práctica es usar nombres de columnas sin comillas en minúsculas con PostgreSQL. Debería haber una configuración en phpPGadmin en algún lugar que le indique que no cite identificadores (como nombres de tablas y columnas) pero, por desgracia, no uso phpPGadmin, así que no sé dónde está esa configuración (o incluso si existe).

Si por alguna razón ha creado un mixed-nombre de columna en mayúsculas o minúsculas, debe citarlo u obtener este error:

test=> create table moo("FOO" int);
CREATE TABLE
test=> select * from moo;
 FOO 
-----
(0 rows)
test=> select "foo" from moo;
ERROR:  column "foo" does not exist
LINE 1: select "foo" from moo;
               ^
test=> _

Observe cómo el mensaje de error da el caso entre comillas.

PostreSQL aparentemente convierte los nombres de las columnas a minúsculas en una consulta sql. He visto problemas en los que mixed los nombres de las columnas de casos darán ese error. Puede solucionarlo poniendo el nombre de la columna entre comillas:

SELECT * FROM table_name where "Foo" IS NULL

Nos encantaría que puedieras dar visibilidad a este enunciado si si solucionó tu problema.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *