通过DATABASE_URL检查数据库状态

时间:2013-09-26 20:39:27

标签: ruby-on-rails postgresql heroku pg heroku-postgres

我已经获得了使用相当奇怪的设置访问Heroku应用程序的权限。它有一个数据库但是当我运行heroku config时,我得到了不同的DATABASE_URL和HEROKU_POSTGRESQL_BRONZE_URL。 当我运行heroku pg:info时,我得到以下结果:

=== HEROKU_POSTGRESQL_BRONZE_URL
Plan:        Dev
Status:      available
Connections: 1
PG Version:  9.2.4
Created:     2013-09-05 11:02 UTC
Data Size:   6.5 MB
Tables:      0
Rows:        0/10000 (In compliance)
Fork/Follow: Unsupported

我意识到我的数据库位于DATABASE_URL,但我无法通过heroku run console访问该数据库。所有heroku pg命令都会失败并显示以下消息:

!    Unknown database: DATABASE_URL. Valid options are: HEROKU_POSTGRESQL_BRONZE_URL

如果我运行heroku pg HEROKU_POSTGRESQL_BRONZE_URL,我可以从上面访问空数据库。

由于我在运行迁移时遇到一些问题,我认为我的数据库可能已满,我想查看它。我有什么想法可以做到吗?

运行heroku run rake db:migrate后出现错误:

PG::Error: ERROR:  permission denied for relation schema_migrations
: INSERT INTO "schema_migrations" ("version") VALUES ('20130918114202')

有关设置的更多信息:

rails 3.2.12

RAILS_ENV:暂存(我无法访问制作,但我知道这是“dev”服务器,而且还有真正的“暂存”,这个应用程序是分叉的。)

3 个答案:

答案 0 :(得分:2)

我有同样的问题,我修复了它:

从数据库中保留备份并重新恢复,以下是步骤:

heroku pg:info                 <-- to get the Database Name
heroku addons:add pgbackups    <-- make sure you have the addons for backup
heroku pgbackups:capture       <-- Capture the backup
heroku pgbackups               <-- check your backups and make sure its there 
heroku pg:reset  DATABASE_NAME <-- Reset your database don't worry we have a backup, replace DATABASE_NAME with database name
heroku pgbackups:restore DATABASE_NAME b001 <-- Restore the backup again, replace DATABASE_NAME with database name and b001 with your Database version you can see this version number in heroku pgbackups step
heroku run rake db:migrate     <-- Now you can run your migration and Operate in normal mode. 

答案 1 :(得分:1)

这似乎是Heroku方面的一些麻烦。你试过和他们一起提交票吗?我一直很幸运得到他们的支持。

答案 2 :(得分:0)

我刚收到客户的最新消息。之前,由于数据库中的数据,我无法删除数据库。最后,我们决定删除数据库,因为可以添加数据(它的开发服务器,如果我们丢失一些虚拟数据并不重要)。

我没有找到上述问题的解决方案,但推广HEROKU_POSTGRESQL_BRONZE_URL并从备份恢复解决了无法访问数据库的问题。