Postgres drop database in rails app with rake command
我无法删除我的postgres数据库for rails app - 最近从部署到heroku后从sqlite切换。在运行我的rake任务来聚合数据并填充数据库时,rake db:create db:migrate all工作,但db:drop不起作用。运行rake db后,我在终端中收到以下错误:drop db:migrate db:create all。 'all'是聚合器的rake任务。
1 2 3 4 5 6 7 8 9 10 | 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文件......`
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | 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命令行的数据库列表:
1 2 3 4 5 6 7 8 | 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 - 谢谢。
有没有人对可能发生的事情或某些可能指向正确方向的资源有任何想法?感谢任何帮助 - 谢谢。
首先,您应该确保在Heroku上使用哪种postgres DB:共享DB或Heroku Postgres。
如果您使用的是共享数据库(建议不要再使用),遗憾的是您必须删除Heroku应用并重新创建具有相同应用名称的新应用。
如果你正在使用Heroku PG,你可以在这里找到你的数据库:https://postgres.heroku.com/databases,然后销毁并添加另一个数据库,它就像删除并重新创建你的数据库,之后你就可以运行迁移了好。使用Heroku PG,我不确定我们是否可以运行db:drop now(已经有一段时间了,因为我在Heroku上无法使用此命令)
关于配置,您应该按照以下几个步骤:
安装宝石pg
使用pgAdmin III或类似的东西尝试连接到PG服务器。如果您成功,请将此信息用于database.yml文件。
注意:当您将代码推送到Heroku时,Heroku将根据其PG服务器信息自动创建新的database.yml,因此您无需关心Heroku上的配置数据库。记得在将应用程序推送到Heroku之前删除sqlite gem
找出问题 - 结果你不能重命名数据库"postgres",因为它需要管理数据库。我曾尝试将postgres重命名为something_development。为了解决这个问题,我创建了一个postgres数据库。
在heroku上,你没有drop database的权限,你必须这样做
1 | heroku pg:reset |
如果您的数据库不在heroku上,请检查(postrgesql)用户是否具有权限。