To mogą być same cytaty, które stanowią cały problem. Miałem podobny problem i było to spowodowane cytatami wokół nazwy kolumny w instrukcji CREATE TABLE. Zauważ, że nie było żadnych problemów, tylko cytaty powodujące problemy.
Kolumna wyglądała tak, jakby była nazywana anID
, ale naprawdę została nazwana "anID"
. Cytaty nie pojawiają się w typowych zapytaniach, więc trudno je było wykryć (dla tego żółtodzioba). Jest to na PostgreSQL 9.4.1
Niektóre bardziej szczegółowo:
Doing postgres=# SELECT * FROM test;
dał:
anID | value
------+-------
1 | hello
2 | baz
3 | foo (3 rows)
ale próbuje wybrać tylko pierwsza kolumna SELECT anID FROM test;
spowodowało błąd:
ERROR: column "anid" does not exist
LINE 1: SELECT anID FROM test;
^
Po prostu szukanie nazw kolumn nie pomogło: postgres=# \d test;
Table "public.test"
Column | Type | Modifiers
--------+-------------------+-----------
anID | integer | not null
value | character varying |
Indexes:
"PK on ID" PRIMARY KEY, btree ("anID")
ale w pgAdmin po kliknięciu na nazwę kolumny i patrzeć w okienku SQL ona wypełniona:
ALTER TABLE test ADD COLUMN "anID" integer;
ALTER TABLE test ALTER COLUMN "anID" SET NOT NULL;
i oto istnieją quoutes wokół nazwy kolumny. Tak więc ostatecznie postgres=# select "anID" FROM test;
działa dobrze:
anID
------
1
2
3
(3 rows)
samo moralne, nie należy używać cudzysłowów.
Co widzisz, jeśli przejdziesz do psql i wpisz "\ d nazwa_tabeli"? –
Jak stworzyłeś kolumnę? Czy został stworzony jako '" Foo "' lub '" Foo "' lub podobny? –
@PaulTomblin Mam dostęp za pomocą phpPGmyadmin, nie mam dostępu do wiersza cmd. – nulltorpedo