Rails的Postgres错误 - 我在本地运行,但数据库无法正常运行

时间:2015-06-27 18:51:04

标签: ruby-on-rails ruby postgresql ruby-on-rails-4

目前正在尝试安装以在我的Mac(Yosemite)上运行Catarse

当我尝试运行rake db:create db:migrate db:seed时,我收到以下消息:

ActiveRecord::StatementInvalid: PG::DuplicateObject: ERROR:  role "admin" already exists
:     CREATE ROLE admin NOLOGIN;
    -- This script assumes a role postgrest and a role anonymous already created
GRANT usage ON SCHEMA postgrest TO admin;
GRANT usage ON SCHEMA "1" TO admin;
GRANT select, insert ON postgrest.auth TO admin;
GRANT select ON ALL TABLES IN SCHEMA "1" TO admin;
GRANT admin TO postgrest;

我尝试过以上但无济于事,现在它说我有一个重复的管理员角色。有人可以提供一些指导或帮助吗?

我花了大部分时间进行故障排除,并通过执行以下操作一次又一次地查看此内容:

卸载catarse
重新安装和卸载postgresql
尝试实现上述GRANT命令

1 个答案:

答案 0 :(得分:0)

似乎您已为数据库级别中的角色名称赋予了唯一约束。因此,请验证列是否具有uniq索引,或者是否在Role模型类中给出了唯一的验证,而您还没有给出!试图保存角色时的符号。我认为在数据库级别给出约束并不是一个很好的做法,它更好地指定模型级别本身的所有内容。否则会有自己的数据库服务异常,这些异常可能不会被ActiveRecord :: RecordInvalid异常捕获。