【发布时间】:2012-05-03 01:51:35
【问题描述】:
我正在尝试创建一个使用 PostgreSQL 的 Rails 应用程序。这是我所做的描述。
PostgreSQL 设置:
我通过 Martin Pitt 维护的ppa:pitti/postgresql 安装了 PostgreSQL 9.1.3。之前安装了 PostgreSQL 8.4;我不确定它是否仍然安装或消失。
- 我向与我的 Ubuntu 帐户同名的数据库添加了一个具有超级用户权限的数据库用户。
- 我用
sudo service postgresql start启动数据库守护进程。 - 我通过 Gerfried Fuchs 维护的 ppa:rhonda/pgadmin3 安装了 pgadmin3, Version 1.14.0 Beta 1。
- 我可以使用我的用户帐户和密码以及端口 5433 通过 pgadmin3 进行连接。
我在 pg_hba.conf 中的 postgres 配置如下(为了可读性删除了 cmets)。
[...]
local all postgres peer
local all all peer
host all all 127.0.0.1/32 md5
host all all ::1/128 md5
Rails 设置:
现在我想创建一个使用 PostgreSQL 的 Rails 应用程序。
- 我通过 RVM 安装了 Ruby 1.9.3-p125。
- 我将 Rails 3.2.3 安装到 Gemset ruby-1.9.3-p125@global。
- 我为应用程序创建了一个 .rvmrc 和 Gemset。
- 我通过
rails new my_test_app -d postgresql创建了一个Rails 应用程序。 - 我在 config/database.yml 中为 development 和 test 配置了
user名称和password并删除了 生产。 - 我在config/database.yml中配置了
host: localhost和port: 5433。
这是我的 config/database.yml 的内容(为了便于阅读,删除了 cmets)。
development:
adapter: postgresql
encoding: unicode
database: my_test_app_development
pool: 5
username: johndoe
password: password
host: localhost
port: 5433
test:
adapter: postgresql
encoding: unicode
database: my_test_app_test
pool: 5
username: johndoe
password: password
问题:
但是,当我运行 bundle exec rake db:create:all 时,我收到以下错误消息。
could not connect to server: No such file or directory
Is the server running locally and accepting connections on Unix domain socket
"/var/run/postgresql/.s.PGSQL.5432"?
[...]
Couldn't create database for {"adapter"=>"postgresql", "encoding"=>"unicode",
"database"=>"my_test_app_test", "pool"=>5, "username"=>"johndoe",
"password"=>"password"}
问题:
为什么我通过pgadmin3成功连接时使用的端口与我使用的端口不同?
【问题讨论】:
-
Rails 应用程序尝试通过 UNIX 套接字而不是 TCP 套接字 localhost:5433 进行连接。如果您正确设置 database.yml,它的行为就不会如此。检查 database.yml 的内容并确保 rails 确实读取了这个文件。请提供 database.yml 的内容。您也可以尝试使用不同的适配器(例如 sqlite)来测试您的设置是否适用。
-
这是否意味着我不应该使用端口 5433 而是使用 database.yml 中的 5432 作为未注释行?
-
对于那些通过 Homebrew 安装 PG 并遇到问题的人,我找到了另一个答案。只需卸载 pg gem 并使用 Homebrew 配置重新安装。请参阅stackoverflow.com/a/19609228/1072058 的答案。
标签: ruby-on-rails ruby-on-rails-3 postgresql postgresql-9.1 rails-postgresql