新Rails安装:ActiveRecord :: NoDatabaseError FATAL:角色不存在

时间:2017-01-09 01:50:40

标签: ruby-on-rails ruby windows postgresql

Rails的新手,并试图让本地开发环境启动并运行一个已经克隆掉git的网站。

当我启动postgres并在我的项目中的终端中键入'rails s'以启动服务器时,我会遇到以下情况:

=> Booting WEBrick
=> Rails 4.2.0 application starting in development on http://localhost:3000
=> Run `rails server -h` for more startup options
=> Ctrl-C to shutdown server
[2017-01-08 20:43:24] INFO  WEBrick 1.3.1
[2017-01-08 20:43:24] INFO  ruby 2.2.6 (2016-11-15) [i386-mingw32]
[2017-01-08 20:43:24] INFO  WEBrick::HTTPServer#start: pid=1036 port=3000




Started GET "/" for ::1 at 2017-01-08 20:43:29 -0500
Started GET "/" for ::1 at 2017-01-08 20:43:29 -0500

ActiveRecord::NoDatabaseError (FATAL:  role "username" does not exist
):

如果我尝试运行

rake db:create

我收到了

FATAL:  role "username" does not exist
C:/RailsInstaller/Ruby2.2.0/lib/ruby/gems/2.2.0/gems/activerecord-4.2.0/lib/active_record/connection_adapters/postgresql_adapter.rb:661:in `rescue in
.....

基本上与rake db:migrate相同。该站点的所有迁移都位于\ Sites \ sitename \ sitename \ db \ migrate

如果我尝试创建用户

psql -U username

我马上回来了

psql: FATAL:  role "username" does not exist

整个下午,我一直在喋喋不休。

我在Windows机器上。有什么想法吗?

4 个答案:

答案 0 :(得分:9)

首先,您必须在psql中设置数据库并创建超级用户。转到psql:

sudo -u postgres psql

然后您可以使用密码创建用户。例如:

create user username with password '12345678';

Rails将在此用户的帮助下管理数据库。所以我们也必须创建一个超级用户:

alter user username with superuser;

创建超级用户后,可以退出psql。相同的数据必须位于/ config / database.yml 文件中:

development:
  <<: *default
  database: database_name
  username: username
  password: '12345678'

在你的应用程序中,repositroy在rake的帮助下创建了一个数据库:

rake db:create

答案 1 :(得分:1)

请同样更新您的database.yml

default: &default
  adapter: postgresql
  encoding: unicode
  pool: 5

development:
  <<: *default
  database: 'some_name'
  username: 'postgres'
  password: 'postgres'
  host: localhost
  port: 5432

Postgresql ,安装时带有role: 'postgres'的默认Password: 'postgres'。如果您不想使用它,您可以创建一个角色并授予他们所有权利。

CREATE ROLE new_user WITH CREATEDB CREATEROLE SUPERUSER;

然后使用新创建的角色更新database.yml

希望这会对你有所帮助。

答案 2 :(得分:0)

default: &default
  adapter: postgresql
  encoding: unicode
  pool: 5

development:
    <<: *default
  database: 'some_name' #database name
  username: 'postgres' #postgres username
  password: 'postgres' #postgres password
  host: localhost
  port: 5432

rake db:create #to create the db in postgres
rake db:migrate #to run migration(if any) in db/migrate folder
rake db:seed #to run seed file in db/seed.rb

答案 3 :(得分:0)

  1. 使用您的计算机密码$ sudo su-postgres登录
  2. 然后创建用户$ createuser -s -r“ YourUsername”
  3. $注销 4. $ rails db:create 5.运行服务器$ rails s