【发布时间】:2018-05-12 17:22:44
【问题描述】:
我目前在 Amazon RDS 上设置了 PostgreSQL 数据库。数据库连接到运行 Rails 应用程序的 Elastic Beanstalk 服务器,Rails 应用程序可以正常工作(在生产站点上,我可以很好地修改数据库。我也可以通过 SQL 工作台查看数据库很好,并且我可以看到我在生产站点上所做的更改反映在数据库中。
所以我知道数据库工作正常,并且我的弹性 beanstalk 服务器可以正常连接到它,我的 Rails 应用程序也可以正常连接到它。
但是,当我尝试通过我的 EC2 实例连接到数据库时(注意:此实例与我的 EB 和 RDS 实例(弗吉尼亚北部)位于不同的区域(俄亥俄),我收到此错误:
psql: 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"?
目录/var/run/postgresql 存在,但该文件不存在。我尝试从根目录搜索该文件,结果发现它在任何地方都不存在。
这是一个问题,因为我需要能够远程播种数据库,并且尝试从控制台运行 rake db:seed 会产生此错误。当我在生产中运行 rails 控制台并尝试查看数据库中的任何内容时,也会出现该错误。
这是我的config/database.ymlfile:
default: &default
adapter: sqlite3
pool: 5
timeout: 5000
development:
<<: *default
database: db/development.sqlite3
test:
<<: *default
database: db/test.sqlite3
production:
<<: *default
adapter: postgresql
encoding: unicode
database: <%= ENV['RDS_DB_NAME'] %>
username: <%= ENV['RDS_USERNAME'] %>
password: <%= ENV['RDS_PASSWORD'] %>
host: <%= ENV['RDS_HOSTNAME'] %>
port: <%= ENV['RDS_PORT'] %>
这是 EB 在部署时知道连接到 PG 数据库的方式。
我尝试编辑我的 RDS 的安全规则以接受来自 EC2 的公共 IP 的 PostgreSQL 连接,但这似乎不起作用。
谁能帮我解决这个问题?
编辑:
好的,我可以使用psql 命令和指定服务器的选项连接到远程数据库。我通过执行一个简单的查询对其进行了测试,我确信连接已建立。不过,我现在不确定如何告诉服务器自动连接到它。
【问题讨论】:
-
你是如何连接的。提供准确的命令。有根据的猜测:您没有指定要连接的主机。
-
@zerkms 编辑了我的帖子。 Elastic Beanstalk 在部署时连接到服务器
-
psql命令在哪里? -
@zerkms 没有
psql命令。所有数据库命令都通过 Rails 文件处理,在 debployment (eb deploy) 上,db:migrate和db:seed应自动执行。我在这里错过了一个命令吗?抱歉,我对所有事物的连接方式有点陌生。 -
您尝试连接到本地套接字上的 postgres。更改配置以包含连接到 RDS 的字符串
标签: postgresql amazon-web-services amazon-ec2 amazon-rds amazon-ebs