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 中列出?