2012-11-13 49 views
-1

當我運行下面的語句,在創建表,但沒有 列:當創建PostgreSQL中的表,該表被創建,但列不

CREATE TABLE "mod_1237" ("Collecteddepth" float8 NOT NULL, "Collectedtime" 
float8 NOT NULL, "CollectedData" Varchar(45) NOT NULL, "Collectedpass" 
float8 NOT NULL, "Collectedmodtime" float8 NOT NULL) WITH (OIDS = FALSE); 

我知道我沒有創建主鍵,但這不應該阻止生成列。當我運行這段代碼時,它也不會產生任何錯誤,所以一切都很好,直到我嘗試寫入表。任何想法爲什麼這不起作用或如何使用給定列創建表格?

我使用的Windows Server標準SP2版本的PostgreSQL 9.1.4

+0

-1 Cross在這裏發佈PostgreSQL郵件列表http://archives.postgresql.org/message-id/[email protected],沒有顯示實際的INSERT語句或錯誤消息。 –

回答

0

剛剛擺脫引號的,因爲我們不會需要他們。

CREATE TABLE mod_1237 (Collecteddepth float8 NOT NULL, Collectedtime float8 NOT NULL, CollectedDate Varchar(45) NOT NULL, Collectedpass float8 NOT NULL, Collectedmodtime float8 NOT NULL) WITH (OIDS = FALSE); 
+0

如果某些其他軟件將使用「Collected Depth」作爲列名稱,則引號是必需的。 –

+0

我不能拿出報價,因爲信箱是必需的。上面的例子僅僅是一個例子,但它給了我與我實際試圖創建的表相同的問題。任何其他想法? – user1821563

1

這是PostgreSQL的郵件列表,where the question was cross-posted上回答了休伯特( 「Depesz」)。任何人在這裏閱讀它的參考,here is the answer。因爲它沒有被添加到檔案但該鏈接將404一小會兒,所以我會下重現赫伯特的答案:


最有可能你沒有插入這樣的:

insert into mod_1237 (Collecteddepth) values (...) 

即你沒有引用列名。因此,這個問題。

在psql裏,你可以這樣做:

\d mod_1237 

,你會看到列在那裏。

最好的問候,

depesz

換句話說:如果您在表定義雙引號的名字,無論你稱它們過於雙引號它們。

這是一個常見問題;見:

多。