Heroku行数计算不正确

23

我一直在使用Heroku来运行我的一个应用程序,但今天它被关闭了,因为行数已经超过了10,000行。

我不理解这个数字是如何得出的,因为Rails告诉我数据库中只有大约2000条记录。

运行pg:info命令后,我看到以下内容:

Plan:        Dev
Status:      available
Connections: 1
PG Version:  9.1.5
Created:     2012-09-25 03:12 UTC
Data Size:   11.0 MB
Tables:      9
Rows:        15686/10000 (Write access revoked)
Fork/Follow: Unavailable

有人能解释一下吗?尽管我只有 2,000 条记录在数据库中,但是我似乎有 15,000 行的数据。

谢谢!


尽管我5分钟前截断了一个表并重新启动了我的应用程序,但是我也遇到了同样的问题,它显示“写访问被撤销”,行数也不正确。 - microspino
更新:30分钟后,heroku pg:info 报告了正确的记录数。 - microspino
1
谢谢!我建议您执行 heroku maintenance:on 命令更新您的表格或者执行 TRUNCATE your_table,然后再运行 heroku maintenance:off 命令。这对我来说非常完美。链接 - hernanvicente
3个回答

45

Rails本身并不足够。Heroku提供了一个方便的SQL控制台,您可以使用以下命令访问:

heroku pg:psql YOUR_DB_URL

那么你可以编写这个查询来获取每个表中记录的排名:

SELECT schemaname,relname,n_live_tup 
  FROM pg_stat_user_tables 
  ORDER BY n_live_tup DESC;

如果你只需要更新后的行数,可以使用:

SELECT sum(n_live_tup) FROM pg_stat_user_tables;
请注意,您可以在配置文件中同时拥有新的dev plan数据库和旧的SHARED数据库(通过heroku pg:info访问它)。您必须插入正确的数据库URL,可能是带颜色的那个。
任何SQL truncateRows计数更新之间请允许30分钟的延迟。
顺便说一句,在我的情况下,http://heroku.com上的Web控制台在我的SQL查询期间得到了正确的数字更新。也许Heroku工具包控制台更新速度较慢。

谢谢 - 结果发现会话数据库里有大量的行,我没有通过检查所有我的Rails模型找到这个问题。非常棒的答案 :) - Averenix

2

我向Heroku支持团队联系,他们运行了以下命令来获取我的数字...

$ heroku pg:info

0

对我来说,30分钟不够,所以我备份并恢复了数据库。然后我的应用程序重新上线。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接