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

时间:2012-09-14 22:59:43

标签: database postgresql heroku

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

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

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

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

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

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

3 个答案:

答案 0 :(得分:69)

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

heroku pg:info -a your_app

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

答案 1 :(得分:20)

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

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

虽然错误消息表明您的数据库出现了一些错误,但可能会出现约束违规,而与您的插入权限被撤销的情况相关。

答案 2 :(得分:1)

Heroku发布了a "pg-extras" toolbelt,它可以为您提供额外的信息,例如数据库的行数。

即使你有比Hobby更高的计划,你也可以通过以下方式获得行数:

heroku plugins:install heroku-pg-extras

然后:

heroku pg:index_usage --app dashboard

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