ActiveRecord::StatementInvalid: PG::InsufficientPrivilege: ERROR: 对于关系schema_migrations,权限被拒绝。

4

我有一个使用Rails和PostgreSQL的本地项目。我将其上传到我的AWS Amazon Linux AMI上。我已经在服务器上运行了使用Rails和PostgreSQL的测试项目。但是,当我上传了我的本地项目并尝试运行时,出现了问题。

rake db:migrate

I get the following error:

ActiveRecord::StatementInvalid: PG::InsufficientPrivilege: ERROR:  permission denied for relation schema_migrations

我看到一些类似的问题,但都没有帮助。我已经设置了适当的角色并进行了连接。


你为postgresql创建了角色吗? - Pavan
我确实拥有这个角色,有趣的是它在创建命令中起作用了。已经三次检查了信息。 - Kevin
另外,为了验证,db:create正常工作,但是migrate不行。 - Kevin
也许尝试使用 GRANT ALL PRIVILEGES ON TABLE schema_migrations TO <your_role>; - eboswort
您是否在同一EC2实例上安装了postgreSQL数据库以供应用程序使用?或者您正在使用RDS或其他数据库系统?这是用于生产应用程序吗? - eirikir
1个回答

4
我不确定您是否正在使用rake db:migrate并将RAILS_ENV设置为生产或开发环境。无论是哪个(默认为开发环境),在config/database.yml文件中,它将显示正在运行的用户、密码和数据库。该用户必须对public.schema_migrations表拥有ALL权限。如果是这样,并且仍然不起作用,请确保该用户对public模式拥有ALL权限。 在此处了解更多关于操作Postgres数据库权限的内容。Postgres有着极好的文档。
还有一件事:如果您正在本地创建此数据库,并尝试创建初始数据库而非实际运行迁移,则应使用rake db:schema:load而非rake db:migrate。千万不要在生产环境上运行此命令,因为它会删除您的数据!

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接