【发布时间】:2018-03-14 08:20:56
【问题描述】:
我使用 /i blah.pgsql 脚本运行了我的 .pgsql 脚本,然后使用我的 .java 函数调用该 pgsql 来测试它。
但是,在我运行它之后。我意识到它损坏了我的数据,我不确定如何调试以及导致数据损坏的原因。我不能 DROP SCHEMA 因为它挂起,所以我必须创建一个新的 SHOW SEARCH_PATH Schema 来再次测试它。我已经做了三遍了,我想避免这个问题。有人可以帮我确定导致数据损坏的原因吗?谢谢!老实说,这是我唯一的问题,我无法弄清楚为什么这会导致数据库损坏。如果您需要更多信息/数据库,请告诉我,以便我进行编辑并提供更多信息。
创建此文件的目的是获取每次更新的计数。 但似乎更新正在破坏整个数据库文件
这是我的代码
CREATE OR REPLACE function assignDelinquents (theAgent char(6), theCount integer)
RETURNS integer
LANGUAGE plpgsql
AS $$
DECLARE
max_update integer := 0;
counter integer := 0;
BEGIN
LOOP
UPDATE Delinquents d
-- code here
counter := counter + 1;
END LOOP;
RETURN counter;
END $$;
编辑:pg_stat_activity 结果:https://pastebin.com/46hN1uj9 我对 pgsql 还很陌生,所以我真的什么都做不了,这真的很奇怪。
【问题讨论】:
-
“损坏的数据”到底是什么意思?您收到的错误信息是什么?
-
为什么您认为它已损坏?从您的描述来看,它看起来更像是锁定的资源。
pg_stat_activity中有什么内容?.. -
@Vao Tsun 它只是挂起。当我尝试放弃该计划时,什么也没有发生。它仍然无限运行。这是 pg_stat_activity pastebin.com/46hN1uj9
-
是的 - 你有 wait_event 不为空。运行wiki.postgresql.org/wiki/Lock_Monitoring 以获取阻止程序 - 并终止它或等待完成或超时...
-
有趣,你知道它为什么会锁吗??我将如何终止阻止程序/超时?
标签: sql postgresql sql-update locks