【问题标题】:How to find number of rows in heroku database如何在heroku数据库中查找行数
【发布时间】:2012-09-08 02:54:51
【问题描述】:

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

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

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

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

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

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

【问题讨论】:

    标签: database postgresql 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 命令”
    猜你喜欢
    • 2022-01-26
    • 2012-02-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-19
    • 2021-12-05
    • 2020-07-22
    • 1970-01-01
    相关资源
    最近更新 更多