You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

HeidiSQL显示PostgreSQL表占空间但无数据,批量插入异常求助

PostgreSQL批量插入后HeidiSQL查不到数据的排查方案

1. 确认事务提交状态

psycopg2默认开启事务,所有插入操作会在未提交的事务中执行——此时数据已写入磁盘(表大小增加),但其他连接(比如HeidiSQL)无法看到。单表插入可能因连接自动关闭触发隐式提交,多表插入时若未显式提交则会出现此问题。

  • 解决:所有插入完成后,必须调用conn.commit();使用上下文管理器时,确保外层连接正确提交,或在上下文内处理提交逻辑。

2. 排查未提交/回滚的事务

  • 执行SELECT * FROM pg_stat_activity查看是否存在idle in transaction状态的进程,这类未提交的事务会占用空间但数据对其他连接不可见。
  • 检查代码中是否存在未捕获的异常,导致事务被自动回滚;若有异常处理逻辑,需确认是否错误触发了conn.rollback()。

3. 修正HeidiSQL的查询状态

HeidiSQL若开启了未提交的事务,会基于事务快照查询数据,无法看到其他连接提交的内容:

  • 执行COMMIT关闭当前事务,或重启查询窗口;
  • 执行SELECT count(*) FROM 目标表直接统计行数,避免UI缓存影响。

4. 验证批量插入的执行逻辑

  • 在插入后打印cur.rowcount,确认实际插入的行数是否符合预期;
  • 开启psycopg2的调试日志,检查生成的SQL语句是否正确,是否存在参数错误或条件过滤导致数据未插入。

5. 确认数据的实际存在性

在psycopg2的连接中直接执行SELECT count(*) FROM 目标表,若返回非零值,说明数据已存在,问题出在HeidiSQL的连接/缓存;若返回零,说明插入逻辑存在问题,需进一步排查代码。

内容的提问来源于stack exchange,提问作者Michael Halim

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 13:05:40