![](/img/trans.png)
[英]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.