问题描述
阿里云云数据库RDS PostgreSQL版中执行SQL语句时出现以下错误:
ERROR: temporary file size exceeds temp_file_limit(8388608kb)
问题原因
SQL查询生成的临时表较大,超过了系统中临时表空间上限(temp_file_limit)。
解决方案
查看当前的临时表空间上限并增加该上限:
通过数据管理DMS登录您的云数据库RDS PostgreSQL版实例。关于如何登录,请参见登录PostgreSQL实例。
在数据管理DMS中,双击目标数据库,即可进入对应的SQL Console页。
在命令窗口中输入下列命令,单击执行,系统返回结果即为当前实例的临时表空间上限,记录该上限值。
show temp_file_limit;
在命令窗口中输入下列命令,单击执行,增加临时表空间上限。
alter role all set temp_file_limit = [$Temp_File_Limit];
说明[$Temp_File_Limit]指调整后的临时表空间上限,单位为kb。该值应当大于报错信息中的临时表大小,比如本文报错中的临时表大小为
8388608kb
,此处调整后的临时表大小建议为20000000kb
。关闭命令窗口,重新单击SQL窗口,再次执行下列命令,查看系统返回结果,确认临时表空间上限修改正确。
show temp_file_limit;
再次执行需要查询的SQL语句,确认错误已经消除。
说明如果需要查询的SQL语句只是临时操作,建议您在执行完SQL语句后,将临时表空间上限修改回原始值。否则可能会因为临时表空间过大致使实例磁盘满,进而被锁定。
适用于
云数据库RDS PostgreSQL版
文档内容是否对您有帮助?