Có thể báo giá chính họ là toàn bộ vấn đề. Tôi đã có một vấn đề tương tự và đó là do dấu ngoặc kép xung quanh tên cột trong câu lệnh CREATE TABLE. Lưu ý rằng không có vấn đề khoảng trắng, chỉ trích dẫn gây ra vấn đề.
Cột trông giống như được gọi là anID
nhưng thực sự được gọi là "anID"
. Các trích dẫn không xuất hiện trong các truy vấn điển hình, do đó rất khó để phát hiện (đối với tân binh này). Đây là trên postgres 9.4.1
Một số chi tiết hơn:
Làm postgres=# SELECT * FROM test;
cho:
anID | value
------+-------
1 | hello
2 | baz
3 | foo (3 rows)
nhưng cố gắng để lựa chọn chỉ là cột đầu tiên SELECT anID FROM test;
dẫn đến một lỗi:
ERROR: column "anid" does not exist
LINE 1: SELECT anID FROM test;
^
Chỉ cần nhìn vào các tên cột không giúp được: postgres=# \d test;
Table "public.test"
Column | Type | Modifiers
--------+-------------------+-----------
anID | integer | not null
value | character varying |
Indexes:
"PK on ID" PRIMARY KEY, btree ("anID")
nhưng trong pgAdmin nếu bạn bấm vào tên cột và tìm kiếm trong cửa sổ SQL nó dân cư với:
ALTER TABLE test ADD COLUMN "anID" integer;
ALTER TABLE test ALTER COLUMN "anID" SET NOT NULL;
và lo and behold có các quoutes xung quanh tên cột. Vì vậy, sau đó cuối cùng là postgres=# select "anID" FROM test;
hoạt động tốt:
anID
------
1
2
3
(3 rows)
Cùng đạo đức, không sử dụng dấu ngoặc kép.
Bạn thấy gì nếu bạn vào psql và gõ "\ d table_name"? –
Bạn đã tạo cột như thế nào? Nó được tạo ra là '" Foo "' hay '" Foo "' hay tương tự? –
@PaulTomblin Tôi đang truy cập bằng phpPGmyadmin, không có quyền truy cập vào dòng cmd. – nulltorpedo