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

8

我刚接触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系统。有什么想法吗?


1
这取决于您的psql数据库设置情况。您能否从“database.yml”中删除“username”和“password”规范并使其正常工作?如果不能,您知道您的数据库的用户名和密码应该是什么吗? - Ryan Bigg
这可能是一个权限问题。我建议使用Docker或某种虚拟机主机来运行一些Linux版本,并使用它来学习Rails。这样你会少遇到很多麻烦,而且能够跟随假定你正在使用Bash和真实操作系统的教程。 - max
从database.yml的'development'配置文件下删除了用户名和密码。同一文件的'production'部分也有用户名和密码,不过它们的配置方式有很大不同。例如: 'development: adapter: postgresql encoding: utf8 database: app_development pool: 5 username: username password:'与production: <<: *default database: appname_production username: appusername password: <%= ENV['APPNAME_DATABASE_PASSWORD'] %>除了最初在OSX中构建,不确定数据库是用什么创建的。 - user1318340
我计划建立一个Linux环境并运行,但今晚的更改仅涉及一些基本的前端HTML/CSS更改,我想在将其推送到Git之前在本地查看。 - user1318340
我通过运行rake db:create && rake db:migrate来解决它。 - nourza
4个回答

16

首先,您需要设置数据库并在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'

在您的应用程序存储库中使用rake创建数据库:

rake db:create

like! ..................... - Nezir

2
请同步更新您的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',密码为 'postgres' 的角色。如果您不想使用它,可以创建一个角色并授予其所有权限。

CREATE ROLE new_user WITH CREATEDB CREATEROLE SUPERUSER;

然后在database.yml文件中更新新创建的角色。

希望这能帮到你。


0
  1. 使用您的电脑密码登录 $ sudo su - postgres
  2. 然后创建用户 $createuser -s -r "YourUsername"
  3. $logout 4.$rails db:create 5.运行服务器 $ rails s

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

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