Es könnte Zitate selbst sein, die das ganze Problem sind. Ich hatte ein ähnliches Problem und es war aufgrund von Anführungszeichen um den Spaltennamen in der CREATE TABLE-Anweisung. Beachten Sie, dass es keine Leerraumprobleme gab, nur Anführungszeichen, die Probleme verursachen.
Die Spalte sah so aus, als ob sie anID
genannt wurde, wurde aber wirklich "anID"
genannt. Die Anführungszeichen erscheinen nicht in typischen Abfragen, so dass es schwer zu erkennen war (für diesen Postgres Rookie). Dies ist auf Postgres 9.4.1
etwas detaillierter:
postgres=# SELECT * FROM test;
tun gab:
anID | value
------+-------
1 | hello
2 | baz
3 | foo (3 rows)
aber nur die erste Spalte SELECT anID FROM test;
in einem Fehler zu wählen versuchen:
ERROR: column "anid" does not exist
LINE 1: SELECT anID FROM test;
^
Nur die Spaltennamen zu sehen, hat nicht geholfen: postgres=# \d test;
Table "public.test"
Column | Type | Modifiers
--------+-------------------+-----------
anID | integer | not null
value | character varying |
Indexes:
"PK on ID" PRIMARY KEY, btree ("anID")
aber in pgAdmin, wenn Sie auf dem Spaltennamen klicken und mit im SQL-Bereich es bevölkerte aussehen:
ALTER TABLE test ADD COLUMN "anID" integer;
ALTER TABLE test ALTER COLUMN "anID" SET NOT NULL;
und siehe da gibt es den quoutes um die Spaltennamen. Also dann schließlich postgres=# select "anID" FROM test;
funktioniert:
anID
------
1
2
3
(3 rows)
gleiche moralische, keine Anführungszeichen verwenden.
Was sehen Sie, wenn Sie in psql gehen und "\ d table_name" eingeben? –
Wie haben Sie die Spalte erstellt? Wurde es als "Foo" oder "Foo" oder ähnlich erstellt? –
@PaulTomblin Ich greife mit phpPGmyadmin, habe keinen Zugriff auf cmd Zeile. – nulltorpedo