Это могут быть кавычки, которые являются всей проблемой. У меня была аналогичная проблема, и это было связано с кавычками вокруг имени столбца в инструкции CREATE TABLE. Обратите внимание, что проблем с пробелами не возникало, а только кавычки, вызывающие проблемы.
Эта колонка выглядела так, как будто она называлась anID
, но на самом деле была названа "anID"
. Кавычки не отображаются в типичных запросах, поэтому их было трудно обнаружить (для этого новобранца postgres). Это на Postgres 9.4.1
Некоторые более подробно:
Doing postgres=# SELECT * FROM test;
дал:
anID | value
------+-------
1 | hello
2 | baz
3 | foo (3 rows)
но при попытке выбрать только первый столбец SELECT anID FROM test;
привел к ошибке:
ERROR: column "anid" does not exist
LINE 1: SELECT anID FROM test;
^
Просто глядя на названия колонок не помогло: postgres=# \d test;
Table "public.test"
Column | Type | Modifiers
--------+-------------------+-----------
anID | integer | not null
value | character varying |
Indexes:
"PK on ID" PRIMARY KEY, btree ("anID")
но в pgAdmin если нажать на имя столбца и посмотреть в панели SQL он населен:
ALTER TABLE test ADD COLUMN "anID" integer;
ALTER TABLE test ALTER COLUMN "anID" SET NOT NULL;
и вот существуют quoutes вокруг имени столбца. Итак, в конечном счете postgres=# select "anID" FROM test;
работает отлично:
anID
------
1
2
3
(3 rows)
же нравственная, не используйте кавычки.
Что вы видите, если вы входите в psql и набираете «\ d table_name»? –
Как вы создали столбец? Было ли оно создано как «Foo» или «Foo» или подобное? –
@PaulTomblin Я получаю доступ с помощью phpPGmyadmin, не имею доступа к строке cmd. – nulltorpedo