首页 云数据库RDS PostgreSQL版中执行SQL语句时出现“ERROR:temporary file size exceeds temp_file_limit(8388608kb)”错误

云数据库RDS PostgreSQL版中执行SQL语句时出现“ERROR:temporary file size exceeds temp_file_limit(8388608kb)”错误

更新时间: 2023-02-06 11:45:20

问题描述

阿里云云数据库RDS PostgreSQL版中执行SQL语句时出现以下错误:

ERROR: temporary file size exceeds temp_file_limit(8388608kb)

问题原因

SQL查询生成的临时表较大,超过了系统中临时表空间上限(temp_file_limit)。

解决方案

查看当前的临时表空间上限并增加该上限:

  1. 通过数据管理DMS登录您的云数据库RDS PostgreSQL版实例。关于如何登录,请参见登录PostgreSQL实例

  2. 在数据管理DMS中,双击目标数据库,即可进入对应的SQL Console页。

  3. 在命令窗口中输入下列命令,单击执行,系统返回结果即为当前实例的临时表空间上限,记录该上限值。

    show temp_file_limit;

  4. 在命令窗口中输入下列命令,单击执行,增加临时表空间上限。

    alter role all set temp_file_limit = [$Temp_File_Limit];
    说明

    [$Temp_File_Limit]指调整后的临时表空间上限,单位为kb。该值应当大于报错信息中的临时表大小,比如本文报错中的临时表大小为 8388608kb,此处调整后的临时表大小建议为 20000000kb

  5. 关闭命令窗口,重新单击SQL窗口,再次执行下列命令,查看系统返回结果,确认临时表空间上限修改正确。

    show temp_file_limit;

  6. 再次执行需要查询的SQL语句,确认错误已经消除。

    说明

    如果需要查询的SQL语句只是临时操作,建议您在执行完SQL语句后,将临时表空间上限修改回原始值。否则可能会因为临时表空间过大致使实例磁盘满,进而被锁定。

适用于

  • 云数据库RDS PostgreSQL版

阿里云首页 云数据库 RDS 相关技术圈