[英]GreenPlum: SQL Error [XX000]: ERROR: Context should be init first (buffile.c:1025)
[英]PostgreSQL - Error: SQL state: XX000
我在Postgres中有一张桌子,看起来像这样:
CREATE TABLE "Population"
(
"Id" bigint NOT NULL DEFAULT nextval('"population_Id_seq"'::regclass),
"Name" character varying(255) NOT NULL,
"Description" character varying(1024),
"IsVisible" boolean NOT NULL
CONSTRAINT "pk_Population" PRIMARY KEY ("Id")
)
WITH (
OIDS=FALSE
);
选择函数如下所示:
CREATE OR REPLACE FUNCTION "Population_SelectAll"()
RETURNS SETOF "Population" AS
$BODY$select
"Id",
"Name",
"Description",
"IsVisible"
from "Population";
$BODY$
LANGUAGE 'sql' STABLE
COST 100
调用select函数将按预期返回表中的所有行。
我需要在表中添加几列(这两列都是数据库中其他表的外键)。 这给了我一个新的表def,如下所示:
CREATE TABLE "Population"
(
"Id" bigint NOT NULL DEFAULT nextval('"population_Id_seq"'::regclass),
"Name" character varying(255) NOT NULL,
"Description" character varying(1024),
"IsVisible" boolean NOT NULL,
"DefaultSpeciesId" bigint NOT NULL,
"DefaultEcotypeId" bigint NOT NULL,
CONSTRAINT "pk_Population" PRIMARY KEY ("Id"),
CONSTRAINT "fk_Population_DefaultEcotypeId" FOREIGN KEY ("DefaultEcotypeId")
REFERENCES "Ecotype" ("Id") MATCH SIMPLE
ON UPDATE NO ACTION ON DELETE NO ACTION,
CONSTRAINT "fk_Population_DefaultSpeciesId" FOREIGN KEY ("DefaultSpeciesId")
REFERENCES "Species" ("Id") MATCH SIMPLE
ON UPDATE NO ACTION ON DELETE NO ACTION
)
WITH (
OIDS=FALSE
);
和功能:
CREATE OR REPLACE FUNCTION "Population_SelectAll"()
RETURNS SETOF "Population" AS
$BODY$select
"Id",
"Name",
"Description",
"IsVisible",
"DefaultSpeciesId",
"DefaultEcotypeId"
from "Population";
$BODY$
LANGUAGE 'sql' STABLE
COST 100
ROWS 1000;
这些更改后调用该函数将导致以下错误消息:
ERROR: could not find attribute 11 in subquery targetlist
SQL state: XX000
是什么导致此错误,我该如何解决? 我试图删除并重新创建列和函数-但发生相同的错误。
平台是Windows Server上运行的PostgreSQL 8.4。 谢谢。
您是否删除并重新创建了功能? 顺便说一下,您一定喜欢Postgres的用户友好程度。 您还会拥抱和亲吻(XXOOO)哪个其他数据库作为错误状态?
当我看到过去类似的情况时,这是因为数据库连接缓存了某些函数属性。 因此,如果我使用的是pgAdmin,则必须关闭SQL编辑器窗口并建立一个新连接,以使该功能正常工作。 如果尚未安装,请确保在新的数据库连接上测试该功能。
我认为该问题已在PostgreSQL的几个版本中解决,但值得尝试。
为我找到了一个更简单的解决方案:创建数据库的备份并从该备份中还原它。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.