2012-12-06 39 views
1

我无法丢弃我的Postgres数据库的Rails应用程序 - 从源码部署到Heroku的后最近切换。当我运行rake任务汇总数据并填充数据库,耙分贝:创建分贝:迁移所有的作品,但DB:降不工作。运行rake数据库后,我在终端中出现以下错误:drop db:migrate db:create all。 'all'是一个聚合器的耙子任务。的Postgres DROP DATABASE与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) 

编辑 - 我正在努力在推动heroku发展之前做到这一点。我是否需要为我的用户名添加访问权限?我尝试了GRANT UPDATE ON something_development TO username,但收到ERROR:关系“something_development”不存在。请记住对于Heroku - 谢谢。

有没有人有什么可能发生的或任何想法,可能指向我的方向是正确的一些资源?感谢任何帮助 - 谢谢。

回答

0

在Heroku上,你不必为删除数据库的权限,你要做的

heroku pg:reset 

如果你的数据库是不是在Heroku上,检查用户(postrgesql的)的权限。

+0

我试图推到之前的Heroku为此在发展。我是否需要为我的用户名添加访问权限?我试图GRANT UPDATE ON something_development TO用户名,但收到的错误:关系“something_development”不存在。请记住对于Heroku - 谢谢。 – pvskisteak5

+0

在postgresql中创建数据库我只是做 \t CREATE USER my_user; \t CREATE DATABASE my_db OWNER my_user; \t ALTER USER my_user WITH ENCRYPTED PASSWORD'password'; \t ALTER ROLE my_user WITH CREATEDB; –

+0

在完成这个操作并在psql中列出数据库之后,我的用户名仍然没有出现在针对something_development的访问权限下。当运行你建议的CREATE命令时,它表示它们已经存在。我还为my_user授予了对something_development的访问权限,这会在psql中列出所有数据库时显示。 – pvskisteak5

1

首先,你应该确保那种其中的Postgres数据库使用在Heroku:共享DB或Heroku的Postgres的。

如果您使用的共享数据库(它的建议,不应该使用更多),不幸的是你必须删除你的Heroku应用程序,并重新创建新的使用相同的应用程序名称。

如果使用Heroku的PG,你可以在这里找到你的DB:https://postgres.heroku.com/databases,只是破坏,并添加另一个数据库,它就像删除并重新创建您的数据库,在这之后您可以运行迁移以及。随着Heroku的PG,我不知道我们是否可以运行分贝:掉落(它已经有一段时间,因为我是不能在Heroku上使用这个命令)

关于配置应遵循以下几个步骤:

使用的pgAdmin III或类似的东西来尝试连接到您的PG服务器上安装宝石PG

。如果成功,请将这些信息用于您的database.yml文件。

注意:当您将代码推送到Heroku时,Heroku会根据他们的PG服务器信息自动创建新的database.yml,因此您不需要关心Heroku上的配置数据库。记住推你的应用的Heroku

+0

在heroku上没有问题 - 一切正常。只是不使用postgres进行开发,根据我的理解,这很常见。谢谢(你的)信息。 – pvskisteak5

0

想通了这个问题之前移除源码宝石 - 原来你不能重命名数据库“Postgres的”,因为它需要一个管理数据库。我曾尝试将postgres重命名为something_development。为了解决这个问题,我创建了一个postgres数据库。