gpt4 book ai didi

python - PL/Python 错误 "could not convert SPI error to Python exception"

转载 作者:行者123 更新时间:2023-11-29 12:05:41 25 4
gpt4 key购买 nike

我正在研究一组 PL/Python 存储过程。我正在使用 PostgreSQL 9.3(从 apt.postgresql.org 安装)和 Python 2.7 解释器;在 Ubuntu 13.04 上运行。

错误发生在大型操作的中间(创建物化 View ,该 View 使用超过 300,000 行的源表中的数据并使用 PL/Python 存储过程计算某些字段)。

我得到的错误输出是:

ERROR:  could not convert SPI error to Python exception
CONTEXT: PL/Python function "get_first_level_parent"
********** Error **********

ERROR: could not convert SPI error to Python exception
SQL state: XX000
Context: PL/Python function "get_first_level_parent"

(“get_first_level_parent”是其中一个存储过程的名称)。

PostgreSQL 服务器日志没有提供任何进一步的说明(我不熟悉 PostgreSQL 和 PL/Python 的内部结构)。当使用详细的错误日志记录运行时,我得到这个:

2013-10-18 12:56:43 EAT ERROR:  XX000: could not convert SPI error to Python exception
2013-10-18 12:56:43 EAT CONTEXT: PL/Python function "get_first_level_parent"
2013-10-18 12:56:43 EAT LOCATION: PLy_spi_exception_set, plpy_spi.c:576

PostgreSQL 错误代码文档告诉我 XX000internal_error 的错误代码。如果我隔离对存储过程的调用并在它自己的语句中运行它,例如 SELECT get_first_level_parent(373673007),它不会引发错误。

我的问题是 - 我可以使用哪些工具/技术来调试此类错误?对于我目前的问题,我很可能通过重写存储过程来“解决”问题(慢慢地,一次测试一小部分)。这是唯一的出路吗?

最佳答案

我会在 src/pl/plpython/plpy_spi.c:PLy_spi_exception_set() 中添加一些调试语句。这可能是 PL/Python 在处理某些边缘条件时的错误。

关于python - PL/Python 错误 "could not convert SPI error to Python exception",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19447004/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com