如何在heroku数据库中查找行数
Posted
技术标签:
【中文标题】如何在heroku数据库中查找行数【英文标题】:How to find number of rows in heroku database 【发布时间】:2012-09-08 02:54:51 【问题描述】:标题几乎概括了我的问题,但这里有更多细节:
我正在运行一个脚本来将行导入 Heroku 数据库。我开始收到错误:
<class 'django.db.utils.DatabaseError'> current transaction is aborted, commands ignored until end of transaction block`
脚本在我的本地主机上运行顺利,所以我不是在那里寻找问题。我最近收到了一封来自 heroku 的电子邮件,说我“接近开发数据库的行数限制”
我假设我达到了行数限制,但我想在采取进一步行动之前确认这一点。
有谁知道我如何找到整个数据库的当前行数? (我知道我可以对每张桌子进行计数,但我希望有更清洁的方法)
【问题讨论】:
【参考方案1】:这将为您提供数据库中所有行的大致计数:
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));
虽然错误消息表明您的数据库存在一些错误,但可能是违反约束而不是您的插入权限被撤销。
【讨论】:
感谢 sql 语句。我希望 Heroku 有一些更简单的东西,但这很有效。你假设它是违反约束是正确的,但一半的进口工作,所以我不认为是这样。我超过了我的行数限制,所以希望这就是问题【参考方案2】:如果您有 heroku cli 工具,它会为您提供数据库中的行数等信息
heroku pg:info -a your_app
还给出了您的计划类型、数据库状态、当前连接数、postgres 版本、数据库创建时间、计划中的行数、数据大小、表数以及您的数据库是否有任何叉/跟随选项已激活。
【讨论】:
嗯。在我的应用程序上,这个命令不会告诉我行数。它给了我你提到的所有属性,除了使用的行数和我的计划中的行数。 (我知道后者是1000万,因为这个应用是在“基本”计划中。) FWIW 只有开发和基本层数据库通过pg:info
提供行数。
这里也一样。为 Dev 计划报告的行数,但不是 Basic。
生产层或基本计划中未报告行数。
如果您已经在应用目录中,也可以直接输入heroku pg:info
而不指定应用【参考方案3】:
Heroku 发布了a "pg-extras" toolbelt,它可以为您提供额外的信息,例如数据库的行数。
即使您有比 Hobby 更高的计划,您也可以通过执行以下操作获得行数:
heroku plugins:install heroku-pg-extras
然后:
heroku pg:index_usage --app dashboard
这将为您提供每个表的行数。
【讨论】:
请注意,您也需要在本地安装 postgresql 才能正常工作;否则,您将收到错误“无法找到本地 psql 命令”以上是关于如何在heroku数据库中查找行数的主要内容,如果未能解决你的问题,请参考以下文章