1

我在删除 Rails 应用程序的 postgres 数据库时遇到问题 - 最近在部署到 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)

编辑 - 在推到 heroku 之前,我试图在开发中做到这一点。我需要为我的用户名添加访问权限吗?我尝试 GRANT UPDATE ON something_development TO username 但收到错误:关系“something_development”不存在。Heroku 会记住这一点 - 谢谢。

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

4

3 回答 3

1

首先,您应该确定在 Heroku 上使用哪种 postgres DB:Shared DB 或 Heroku Postgres。

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

如果您使用 Heroku PG,您可以在此处找到您的数据库:https ://postgres.heroku.com/databases并销毁并添加另一个数据库,就像删除并重新创建您的数据库,之后您可以运行迁移出色地。使用 Heroku PG,我不确定我们现在是否可以运行 db:drop(我已经有一段时间无法在 Heroku 上使用此命令了)

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

安装 gem pg

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

注意:当你将代码推送到 Heroku 时,Heroku 会根据他们的 PG 服务器信息自动创建新的 database.yml,所以你不需要关心 Heroku 上的配置数据库。请记住在将您的应用程序推送到 Heroku 之前删除 sqlite gem

于 2012-12-06T04:02:43.803 回答
0

在heroku上,您没有删除数据库的权限,您必须这样做

heroku pg:reset

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

于 2012-12-06T03:09:10.340 回答
0

找出问题所在 - 事实证明您无法重命名数据库“postgres”,因为它需要它来管理数据库。我曾尝试将 postgres 重命名为 something_development。为了解决这个问题,我创建了一个 postgres 数据库。

于 2012-12-07T03:03:17.457 回答