在Ubuntu上为Ruby on Rails安装PostgreSQL


73

我目前在Ubuntu 12.04中通过RVM安装了Ruby on Rails。默认数据库是在SQLite3中设置的,但是出于推送到Heroku的目的,我想切换到PostgreSQL。我该怎么做?

Answers:


168

这是我遵循的步骤:

安装PostgreSQL和开发包

$ sudo apt-get install postgresql
$ sudo apt-get install libpq-dev

设置一个与我的Ubuntu登录名相同的用户

$ sudo su postgres -c psql
postgres=# CREATE ROLE <username> SUPERUSER LOGIN;
postgres=# \q

修改宝石文件

# Remove gem 'sqlite3'
gem 'pg'

database.yml在应用目录中修改

development:
  adapter: postgresql
  encoding: unicode
  database: appname_development
  pool: 5
  timeout: 5000
  username: <username>
  password:

test:
  adapter: postgresql
  encoding: unicode
  database: appname_test
  pool: 5
  timeout: 5000
  username: <username>
  password:

运行捆绑安装

$ bundle install

创建数据库和迁移

$ rake db:create:all
$ rake db:migrate

这是我用来帮助的资源:http :
//mrfrosti.com/2011/11/postgresql-for-ruby-on-rails-on-ubuntu/
http://railscasts.com/episodes/342-migrating-to -postgresql
https://devcenter.heroku.com/articles/local-postgresql


14
如果您想添加密码,请在运行后使用此命令CREATE ROLEALTER ROLE <username> WITH PASSWORD '<yourpassword>';然后显然将您的密码添加到database.yml
Hengjie 2013年

9
另外,如果您是第一次创建角色,并且还想输入密码:CREATE ROLE <username> SUPERUSER LOGIN PASSWORD '<yourpassword>';
Hengjie 2013年

1
致命:用户“真棒”的对等身份验证失败
jmontross 2013年

1
为我工作。我使用以下命令创建了psql用户:CREATE ROLE Alex SUPERUSER LOGIN;。在database.yml中,我还将用户名设置为,Alex并得到与jmontross相同的错误。然后我将其更改为alex,一切正常。我也不得不跑步rake db:migrate RAILS_ENV=test。另请注意-此方法将数据库从sqlite3迁移到postgres,但不迁移数据库中的实际数据。要同时迁移它,请参考答案中提到的railscast。
亚历山大

1
2年后,此答案唯一有点过时的是postgresql版本。使用该命令sudo apt-get install postgresql将安装最新的可用版本。
2014年

6

对于所有Ubuntu 13.10打开此线程的用户,请按照以下步骤进行安装postresql

sudo sh -c "echo 'deb http://apt.postgresql.org/pub/repos/apt/ precise-pgdg main' > /etc/apt/sources.list.d/pgdg.list"
wget --quiet -O - http://apt.postgresql.org/pub/repos/apt/ACCC4CF8.asc | sudo apt-key add -
sudo apt-get update
sudo apt-get install postgresql-common -t saucy
sudo apt-get install postgresql-9.2 libpq-dev

因为没有官方的Postgres仓库Ubuntu 13.10

然后按照Nick说明创建用户(您也可以指定密码):

sudo su postgres -c psql
postgres=# CREATE ROLE gotqn SUPERUSER LOGIN;
postgres=# \password gotqn
postgres=# \q

注意:将gotqn以上内容替换为whoami结果:

在此处输入图片说明

创建Rails应用程序的最简单方法是指定您的使用方式postgresql,如下所示:

rails new Demo -d postgresql

上面的代码将自动将pggem添加到您的文件中GemFile并创建适当的database.yml文件:

development:
  adapter: postgresql
  encoding: unicode
  database: Demo_development
  pool: 5
  username: gotqn
  password: mypass

注意:您需要更改用户名并指定正确的密码(如果已设置)。

然后运行rake db:create并启动Rails服务器。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.