设置PostgreSQL和db:rake的问题

时间:2014-04-20 02:59:52

标签: sql ruby-on-rails linux postgresql

我在为正在处理的项目设置Postresql时遇到了很多问题。


一些信息:

- 我正在运行Ubuntu 12.04

- 我安装了一个postgres用户帐户

- 我正在尝试在RoR中使用一个项目。


我正在尝试使用此命令:

“捆绑exec rake db:create”

我尝试将它用作sudo,计算机用户和postgres。

当我以计算机用户身份运行它时,它返回“fe_sendauth:no password supplied”,然后中止rake。

知道我的(用户帐户) ruby​​版本 2.1.0 ,因为当我运行“ruby --version”时,它返回

“ruby 2.1.0p0(2013-12-25修订版44422)[x86_64-linux]”

然而,当我将“ruby --version”作为 postgres 运行时,它会返回

“ruby 2.0.0p353(2013-11-22修订版43784)[x86_64-linux]”

如何为我的用户帐户和postgres提供单独的ruby版本?我尝试使用sudo用RVM更改ruby版本,但我被拒绝了。

我不记得为postgres sudo设置密码了,我无法理解。

我该怎么办

  1. 恢复/重置我的sudo postgres密码。
  2. 完成第1步后,在postgres帐户上安装/设置最新(2.1.0)版本的ruby。
  3. 运行bundle exec rake db:create after all?

2 个答案:

答案 0 :(得分:0)

嗯,不确定linux的任何具体问题,但听起来你安装好了。

很难说没有查看你的database.yml,但rails约定似乎是用用户名<%= your_project_name%>连接到数据库。和一个空密码。根据错误,您可能没有在postgres中创建这样的用户/角色。

# enter the psql shell as the postgres admin user
psql -d postgres
CREATE ROLE <%= your_project_name %> WITH LOGIN CREATEDB SUPERUSER;
\q

# create the dbs and load the schema
bundle exec rake db:create
bundle exec rake db:schema:load
bundle exec rake db:migrate
bundle exec rake db:test:prepare

# revoke superuser, it was just there in case there were any extensions that needed installing
psql -d postgres
ALTER ROLE <%= your_project_name %> WITH NOSUPERUSER;
\q

应该这样做,虽然听起来你也可能遇到RVM问题。网站上有大量关于RVM的文档。

您也可能会将数据库中用户/角色的概念与操作系统中用户的概念混淆。您应该能够使用任何unix用户访问数据库,但是您需要使用database.yml对数据库中的rails进行身份验证。如上所述,大多数铁轨项目似乎都有默认值,但我们当然可以使用你想要的任何东西。

答案 1 :(得分:0)

好的,所以我修复了我的主要问题,我的ruby版本不正确,无法解决,因为我没有身份验证。

我用

做了这个

$ / bin / bash --login

这让我输入

$ rvm --default使用2.1.0

这将用户postgres中的ruby版本设置为2.1.0。


然而,然后我尝试运行

$ bundle install

用户postgres中的

,我被拒绝并发出此错误

不幸的是,发生了致命错误。请参阅Bundler故障排除文档 http://bit.ly/bundler-issues。谢谢!

/home/myusername/.rvm/rubies/ruby-2.1.0/lib/ruby/2.1.0/fileutils.rb:250:in,mkdir' ;:权限被拒绝@ dir_s_mkdir - / home / myusername / .bundler(Errno :: EACCES)

我无法访问用户postgres的sudo,因为我没有为它设置密码。因此,我相信我的问题的答案是运行

$ sudo bundle install

但我没有sudo密码。

对此问题的任何帮助都将不胜感激。