当我运行以下语句时,表被创建,但没有 列:
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 Standard SP2上使用PostgreSQL版本9.1.4
答案 0 :(得分:1)
这是由Hubert(“Depesz”)在PostgreSQL邮件列表where the question was cross-posted上回答的。供在此阅读的任何人参考,here is the answer。既然它还没有被添加到档案中,那么这个链接将会有一段时间,所以我将在下面重现赫伯特的答案:
很可能你插入了如下:
insert into mod_1237 (Collecteddepth) values (...)
即。你没有引用列名。因此问题。
在psql中,你可以这样做:
\d mod_1237
你会看到列在那里。
致以最诚挚的问候,
depesz
换句话说:如果在表定义中双引号,则在引用它们的地方双引号。
这是一个FAQ;见:
等等。
答案 1 :(得分: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);