在现有项目上使用Rails设置postgresql数据库

时间:2015-03-05 15:00:24

标签: ruby-on-rails ruby postgresql rake rubymine

我是Rails和Ruby的新手,我试图让现有项目适用于我的环境,我使用Ubuntu 14.04和Rubymine,Rails 4.2和Ruby 2.2.0 < / p>

以下是迁移文件:

class CreatePeople < ActiveRecord::Migration
  def change

    create_table :people do |t|
      t.string :pid, limit: 20, null: false
      t.string :firstname, limit: 40, null: false
      t.string :lastname, limit: 40, null: false
      t.integer :age
      t.string :gender, limit: 4, null: false
      t.datetime :birthday
      t.string :country, limit: 2
      t.timestamps null: false
    end

    add_index :people, :firstname
    add_index :people, :lastname
    add_index :people, :country
    add_index :people, :pid, unique: true
  end
end

我的database.yml:

config=/opt/local/lib/postgresql84/bin/pg_config

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

development:
  <<: *default
  database: vasco_annuaire

  <<: *default
  database: annuaire_test


  <<: *default
  database: annuaire_production
  username: annuaire
  password: <%= ENV['ANNUAIRE_DATABASE_PASSWORD'] %>

运行rake db:create给我

  

&#34;角色ferenan不存在&#34;

启动localhost:3000给出

  

ActiveRecord :: NoDatabaseError致命:角色&#34; ferenan&#34;不存在

     

摘录来源(约661号线):659 660 661 662 663 664

    rescue ::PG::Error => error
      if error.message.include?("does not exist")
        raise ActiveRecord::NoDatabaseError.new(error.message, error)
      else
        raise
      end

我也无法通过Pg-Admin-III连接到Postgresql

server name : Postgresql
host : localhost
port : 5432
maintenance_db : postgres
username : postgres
no password

使用这些参数我收到消息:

  

fe_sendauth:未提供密码

我已将此行添加到我的pg_hba.conf中:

host    sa    all         192.168.0.nnn/32     trust

这个到我的postgresql.conf:

listen_addresses = '*'

然后运行以下命令:

sudo /etc/init.d/postgresql reload

我不知道该做什么以及如何让这些东西一起工作,但该项目确实有效,因为我的上司早些时候告诉我,不幸的是他目前无法帮我解决这个问题。想通了。非常感谢任何帮助。

1 个答案:

答案 0 :(得分:3)

默认情况下,如果没有指定用户名,postgesql会尝试使用当前用户(在您的情况下为ferenan)进行连接,但在vanilla安装中,不存在此类角色。

要连接到角色postgres,请将database.yml更改为:

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

关于Pg-Admin-III,您似乎尝试从localhost进行连接,因此我建议您尝试将以下内容添加到pg_hba.conf(通过md5授权信任来自localhost的请求) ):

host    all             all             127.0.0.1/32            trust