Postgres使用rake命令在rails app中删除数据库

时间:2012-12-06 02:49:14

标签: ruby-on-rails postgresql

我无法删除我的postgres数据库中的rails应用程序 - 最近在部署到heroku后从sqlite切换。在运行我的rake任务来聚合数据并填充数据库时,rake db:create db:migrate all工作,但db:drop不起作用。运行rake db后,我在终端中收到以下错误:drop db:migrate db:create all。 'all'是聚合器的rake任务。

Couldn't drop something_development : #<PG::Error: FATAL:  database "postgres" does not exist
>
Couldn't drop something_test : #<PG::Error: could not connect to server: No such file or directory
    Is the server running locally and accepting
connections on Unix domain socket "/var/pgsql_socket/.s.PGSQL.5432"?
>
something_development already exists
could not connect to server: No such file or directory
Is the server running locally and accepting
connections on Unix domain socket "/var/pgsql_socket/.s.PGSQL.5432"?    

'这是我的database.yml文件......`

development:
  adapter: postgresql
  host: localhost
  database: something_development

  username: username


test:
  adapter: postgresql
  database: something_test
 pool: 5
 timeout: 5000

production:
 adapter: postgresql
 host: localhost
 username: username
 database: something_production

此处还有来自psql命令行的数据库列表:

                                         List of databases
         Name         |      Owner      | Encoding | Collate | Ctype |          Access privileges          
----------------------+-----------------+----------+---------+-------+-------------------------------------
username              | username        | UTF8     | en_US   | en_US | 
something_development | username        | UTF8     | en_US   | en_US | 
template0             | username        | UTF8     | en_US   | en_US | =c/username+          |                 |          |         |       | username=CTc/username
template1             | username        | UTF8     | en_US   | en_US | =c/username    +      |                 |          |         |       | username=CTc/username
(4 rows)

编辑 - 我在开发之前尝试在开发中执行此操作。我是否需要为用户名添加访问权限?我尝试GRANT UPDATE ON something_development TO用户名但收到ERROR:关系“something_development”不存在。请记住,对于Heroku - 谢谢。

有没有人对可能发生的事情或可能指向正确方向的某些资源有任何想法?感谢任何帮助 - 谢谢。

3 个答案:

答案 0 :(得分:1)

首先,您应确保在Heroku上使用哪种postgres数据库:Shared DB或Heroku Postgres。

如果您使用的是共享数据库(建议不要再使用),遗憾的是您必须删除Heroku应用并重新创建具有相同应用名称的新应用。

如果您正在使用Heroku PG,您可以在这里找到您的数据库:https://postgres.heroku.com/databases并且只需销毁并添加另一个数据库,就像删除并重新创建数据库一样,之后您也可以运行迁移。使用Heroku PG,我不确定我们是否可以运行db:drop now(已经有一段时间了,因为我没有在Heroku上使用此命令)

关于配置,您应该按照以下几个步骤操作:

安装gem pg

使用pgAdmin III或类似的东西尝试连接到PG服务器。如果您成功,请将此信息用于database.yml文件。

注意:当您将代码推送到Heroku时,Heroku将根据其PG服务器信息自动创建新的database.yml,因此您无需关心Heroku上的配置数据库。记得在将应用程序推送到Heroku之前删除sqlite gem

答案 1 :(得分:0)

在heroku上你没有drop database的权限,你必须这样做

heroku pg:reset

如果您的数据库不在heroku上,请检查(postrgesql)用户是否具有权限。

答案 2 :(得分:0)

找出问题 - 结果你无法重命名数据库“postgres”,因为它需要管理数据库。我曾尝试将postgres重命名为something_development。为了解决这个问题,我创建了一个postgres数据库。