如何在heroku数据库中查找行数

mea*_*a36 33 database postgresql heroku

标题几乎总结了我的问题,但这里有更多细节:

我正在运行一个脚本来将行导入到heroku数据库中.我开始收到错误:

<class 'django.db.utils.DatabaseError'> current transaction is aborted, commands ignored until end of transaction block`
Run Code Online (Sandbox Code Playgroud)

脚本在我的本地主机上运行顺畅,所以我不会在那里寻找问题.我最近收到一封来自heroku的电子邮件,声称我"正在接近开发数据库的行限制"

我假设我达到了行限制,但我想在采取进一步行动之前确认这一点.

有谁知道如何找到整个数据库的当前行数?(我知道我可以只对每张桌子进行统计,但我希望有一种更清洁的方式)

Gre*_*egB 71

如果你有heroku cli工具,这将为你提供数据库中的行数等

heroku pg:info -a your_app
Run Code Online (Sandbox Code Playgroud)

还给出了您的计划类型,数据库状态,当前连接数,postgres版本,创建数据库的时间,计划中的行数,数据大小,表的数量以及数据库是否具有任何分支/按照选项激活.

  • 同样在这里.针对Dev计划报告行数,但不报告Basic. (7认同)
  • 嗯.在我的应用程序上,此命令不会告诉我行数.除了使用的行数和计划中的行数外,它还提供了您提到的所有属性.(我知道后者是1000万,因为这个应用程序是在"基本"计划.) (4认同)
  • 生产层或基本计划不报告行数. (3认同)
  • FWIW只有dev和基本层数据库通过`pg:info`提供行计数. (2认同)
  • 如果您已经在应用程序目录中,您也可以只输入 `heroku pg:info` 而不指定应用程序 (2认同)

Cra*_*ens 21

这将为您提供数据库中所有行的大致计数:

 SELECT sum(reltuples) from pg_class where relname IN (SELECT c.relname
 FROM pg_catalog.pg_class c
 LEFT JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace
 WHERE c.relkind = 'r'
 AND n.nspname <> 'pg_catalog'
 AND n.nspname <> 'information_schema'
 AND n.nspname !~ '^pg_toast'
 AND pg_catalog.pg_table_is_visible(c.oid));
Run Code Online (Sandbox Code Playgroud)

虽然错误消息表明您的数据库有一些错误,但可能是违反约束的行为与撤销插入权限的行为相关.


Alp*_*ico 6

Heroku 发布了一个“pg-extras”工具带,它可以为您提供额外的信息,例如数据库的行数。

即使您有比 Hobby 更高的计划,您也可以通过执行以下操作获得行数:

heroku plugins:install heroku-pg-extras
Run Code Online (Sandbox Code Playgroud)

然后:

heroku pg:index_usage --app dashboard
Run Code Online (Sandbox Code Playgroud)

这将为您提供每个表的行数。