Rake db:reset '用户没有 CONNECT 权限'

Posted

技术标签:

【中文标题】Rake db:reset \'用户没有 CONNECT 权限\'【英文标题】:Rake db:reset 'user does not have CONNECT privilege'Rake db:reset '用户没有 CONNECT 权限' 【发布时间】:2013-09-29 03:37:16 【问题描述】:

所以我在我的 Rails 应用程序中使用 Heroku Postgres,但我没有在 Heroku 本身上托管我的应用程序。我在 database.yml 中使用了 Heroku 的 Active Record 连接详细信息,它看起来像这样:

development:
adapter: postgresql
encoding: unicode
pool: 5
database: [database]
username: [username]
password: [password]
host: ec2-54-227-243-78.compute-1.amazonaws.com
port: 5432

但是,现在我正在尝试 rake db:migrate 我的应用程序,以便数据库全部设置为我的模型。运行该命令没有任何作用,所以我尝试了rake db:reset,我得到了这个:

Couldn't drop df2cokjfj0k4vu : #<PG::Error: FATAL:  permission denied for database "postgres"                                                                  
DETAIL:  User does not have CONNECT privilege.                                                                                                                 

df2cokjfj0k4vu 已经存在 -- initialize_schema_migrations_table() -> 1.3997s -- 假设_migrated_upto_version(20130924040351, ["/home/action/braindb/db/migrate"]) -> 0.0882s

知道我做错了什么。我对 Rails 还是很陌生,所以有时我会忘记如何在迁移主机时正确设置我的 Postgres 数据库。

【问题讨论】:

【参考方案1】:

如果您是因为运行 rake db:create 而得到此信息,请直接跳至迁移。无论出于何种原因,heroku 上的 postgresql 都不需要本地安装中可能需要的 rake db:create 步骤。

换句话说,而不是

heroku run rake db:create db:migrate db:seed

改为运行它

heroku run rake db:migrate db:seed

【讨论】:

【参考方案2】:

我的解决方案是直接进行迁移,因为数据库已经创建(不要继续“heroku run rails db:create”

heroku run rails db:migrate -a YOURAPPNAME

【讨论】:

【参考方案3】:

像其他人一样,我遇到了类似的问题,但运行 pg:reset 并没有帮助:这就是我遇到 user does not have CONNECT privilege 问题的地方。

1)heroku pg:reset会提示你输入项目名称进行确认。

2) 从Heroku's docs 运行heroku rake db:schema:load

【讨论】:

【参考方案4】:

改用heroku pg:reset DATABASE,如https://devcenter.heroku.com/articles/rake中所述

您不能使用 rake db:reset 删除 Heroku 中的数据库,因为用户没有权限。

【讨论】:

使用heroku pg:reset时必须指定数据库 heroku pg:reset DATABASE 在 Heroku 上重置数据库的良好说明:***.com/questions/4820549/how-to-empty-db-in-heroku 还要注意,你需要在之后运行heroku run rake db:migrate,因为reset并不是真正的reset,它只是意味着drop。 我在一个全新的 heroku 应用程序上遇到了这个错误。看起来很奇怪?【参考方案5】:

我最近遇到了这个问题,通过以下步骤解决了。

    heroku pg --help 获取使用 postgres 的命令名称

    heroku pg:reset DATABASE # 重置数据库

    回答提示确认

【讨论】:

【参考方案6】:

我遇到了同样的问题。我通过运行修复了它:

heroku pg:reset DATABASE

(注意:必须如上指定DATABASE)

【讨论】:

【参考方案7】:

对于我的一个应用,升级到 Heroku 数据库的第一个付费层似乎对我有用:https://devcenter.heroku.com/articles/upgrade-heroku-postgres-with-pgbackups#provision-new-plan

原因是“heroku pg:info”显示我超出了行限制,如下所示: 行数:12392/10000(写访问被撤销)

【讨论】:

【参考方案8】:

你在 Heroku 上 can't drop your PG database。

【讨论】:

那么您能否建议我可能需要做些什么来迁移并创建表? heroku run rake db:migrate 什么都不做?您可以使用heroku rake run db:schema:load“去核”,这将重新加载完整的架构。 等等,你是在本地机器上使用 Heroku DB 吗?如果是这样,请从命令前面删除heroku,然后运行rake db:schema:load 我会试试的。谢谢 rake db:schema:load 似乎有效,但 rake db:migrate 仍然什么都不做。我会继续环顾四周。谢谢你的帮助,尼克。

以上是关于Rake db:reset '用户没有 CONNECT 权限'的主要内容,如果未能解决你的问题,请参考以下文章

rake db:migrate db:reset 和 db:schema:load 之间的区别

$ bundle exec rake db:reset 命令提升无法删除 db/development.sqlite3

为啥 rake db:migrate:reset 未在 rake -T 中列出?

在 rake 任务期间关闭观察者的简单方法?

markdown rake db:createすると访问被拒绝用户が出る

你可以重新训练 RAKE 吗?