39

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

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

<class 'django.db.utils.DatabaseError'> current transaction is aborted, commands ignored until end of transaction block`

该脚本在我的本地主机上运行顺利,所以我不是在那里寻找问题。我最近收到了来自 heroku 的电子邮件,说我“接近开发数据库的行数限制”

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

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

4

3 回答 3

79

如果你有 heroku cli 工具,这将给你,除其他外,你的数据库中的行数

heroku pg:info -a your_app

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

于 2012-09-26T07:54:41.320 回答
22

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

 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));

尽管错误消息表明您的数据库存在一些错误,但可能是违反约束而不是您的插入权限被撤销。

于 2012-09-14T23:18:22.180 回答
6

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

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

heroku plugins:install heroku-pg-extras

然后:

heroku pg:index_usage --app dashboard

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

于 2018-03-20T12:27:23.857 回答