【问题标题】: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 数据库。

【问题讨论】:

    标签: ruby-on-rails ruby postgresql heroku


    【解决方案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 上重置数据库的良好说明:stackoverflow.com/questions/4820549/how-to-empty-db-in-heroku
          • 还要注意,你需要在之后运行heroku run rake db:migrate,因为reset并不是真正的reset,它只是意味着drop。
          • 我在一个全新的 heroku 应用程序上遇到了这个错误。看起来很奇怪?
          【解决方案5】:

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

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

          2. heroku pg:reset DATABASE # 重置数据库

          3. 回答提示确认

          【讨论】:

            【解决方案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 仍然什么都不做。我会继续环顾四周。谢谢你的帮助,尼克。
                猜你喜欢
                • 2015-07-03
                • 1970-01-01
                • 2016-03-11
                • 1970-01-01
                • 1970-01-01
                • 2015-06-15
                • 2016-04-14
                • 2018-12-02
                • 2018-02-24
                相关资源
                最近更新 更多