AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 109828
Accepted
pstanton
pstanton
Asked: 2010-02-05 15:49:56 +0800 CST2010-02-05 15:49:56 +0800 CST 2010-02-05 15:49:56 +0800 CST

如何调整 postgres 以避免此错误?

  • 772

我收到错误

错误:无法写入临时文件的块 3478284:设备上没有剩余空间

运行以下查询时:

INSERT INTO summary SELECT t1.a, t1.b, SUM(t1.p) AS p, COUNT(t1.*) AS c,
    t1.d, t1.r, DATE_TRUNC('month', t1.start) AS month, t2.t AS t, t2.h, t2.x
FROM raw1 t1, raw2 t2
WHERE t1.t2_id=t2.id AND (t2.t<>'a' OR t2.y) GROUP BY month, t, a, b, d, r, h, x

表 t1 非常大,表 t2 非常大

Caused by: org.postgresql.util.PSQLException: ERROR: could not write block 3478284 of temporary file: No space left on device
        at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:1592)
        at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1327)
        at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:192)
        at org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:451)
        at org.postgresql.jdbc2.AbstractJdbc2Statement.executeWithFlags(AbstractJdbc2Statement.java:350)
        at org.postgresql.jdbc2.AbstractJdbc2Statement.executeUpdate(AbstractJdbc2Statement.java:304)

任何提示表示赞赏。

postgresql
  • 4 4 个回答
  • 26845 Views

4 个回答

  • Voted
  1. Best Answer
    voretaq7
    2010-02-05T19:50:13+08:002010-02-05T19:50:13+08:00

    Postgres 在尝试完成您的请求时,其临时转储场的空间不足 - 解决此问题的方法是运行更简单的查询(这可能没有帮助)或释放驱动器上的更多空间PGDATA/base/pgsql_tmp/ (如果你有一段时间没做过VACUUM FULL可能是个好时机:-)

    你也可以put pgsql_tmp在它自己的分区上(注意权限,因为 Postgres 往往对这些事情很敏感)

    请注意,我相信pgsql_tmp这些天是每个表空间,所以如果这不是主(base)表空间适当的替代品:-)

    • 9
  2. Bill Weiss
    2010-02-05T17:06:00+08:002010-02-05T17:06:00+08:00

    在它写入的磁盘上添加空间?

    • 2
  3. siege
    2018-05-09T11:53:22+08:002018-05-09T11:53:22+08:00

    我知道这个线程有点旧,但我认为这可以帮助某人,因为我遇到了类似的问题并且没有选择扩展远程主机上的存储。

    我设法解决它的另一种方法是运行脚本以分块选择记录并遍历记录,直到最后一个结果不返回任何记录。例如,像下面这样的东西应该适合你。

    请注意顺序,这非常重要,否则,您可能会选择已被选择的记录并最终出现重复(我有过)。

    INSERT INTO summary SELECT t1.a, t1.b, SUM(t1.p) AS p, COUNT(t1.*) AS c,
        t1.d, t1.r, DATE_TRUNC('month', t1.start) AS month, t2.t AS t, t2.h, t2.x
    FROM raw1 t1, raw2 t2
    WHERE t1.t2_id=t2.id AND (t2.t<>'a' OR t2.y) 
    order by t1.a, t1.b
    limit 100 offset 0
    GROUP BY month, t, a, b, d, r, h, x
    

    在下一次运行执行中,您将偏移量调整为 100,依此类推。

    希望它可以帮助某人。:)

    • 2
  4. ScottZ
    2010-02-05T18:13:08+08:002010-02-05T18:13:08+08:00

    我敢打赌,postgres 使用 /tmp 进行临时存储,并且您的根分区小于系统中的分区。如果您将 postgres 临时存储更改为您有更多空间的地方,您可以解决此问题。或者正如上面的帖子所说,添加更多空间。要确认这是在 /tmp 中写入,请查看配置文件或在运行查询时一遍又一遍地运行 ls -lart /tmp,如果文件正在增长,那么这就是它正在写入的位置。我不是 postgres 用户,但在大多数情况下,您应该能够通过我上面所说的来弄清楚。

    • -2

相关问题

  • OS X 上的 Postgresql 安装问题

  • 修复 mysql 命令行程序中的 Control-C?

  • 有哪些好的 PostgreSQL 管理工具?[关闭]

  • Access 通过 ODBC 连接到远程 Postgresql 数据库是否可用?

  • 哪个数据库服务器扩展性更好:PostgreSQL 还是 MySQL?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    从 IP 地址解析主机名

    • 8 个回答
  • Marko Smith

    如何按大小对 du -h 输出进行排序

    • 30 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    MikeN 在 Nginx 中,如何在维护子域的同时将所有 http 请求重写为 https? 2009-09-22 06:04:43 +0800 CST
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    0x89 bash中的双方括号和单方括号有什么区别? 2009-08-10 13:11:51 +0800 CST
  • Martin Hope
    Kyle Brandt IPv4 子网如何工作? 2009-08-05 06:05:31 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve