gpt4 book ai didi

postgresql - 无法通过 EC2 连接到 Amazon PostgreSQL RDS

转载 作者:行者123 更新时间:2023-11-29 13:17:08 25 4
gpt4 key购买 nike

我目前在 Amazon RDS 上设置了 PostgreSQL 数据库。数据库连接到运行 Rails 应用程序的 Elastic Beanstalk 服务器,并且 Rails 应用程序可以正常工作(在生产站点上,我可以很好地修改数据库。我也可以通过 SQL 工作台很好地查看数据库,并且我可以看到我在生产站点上所做的更改反射(reflect)在数据库中)。

所以我知道数据库工作正常,我的弹性 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.yml文件:

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 的公共(public) IP 的 PostgreSQL 连接,但这似乎不起作用。

谁能帮我解决这个问题?

编辑:

好的,我可以使用带有指定服务器选项的 psql 命令连接到远程数据库。我通过执行一个简单的查询对其进行了测试,我确信连接已建立。不过,我现在不确定如何让服务器自动连接到它。

最佳答案

看起来您的应用程序正在尝试连接到本地主机上的 PostgreSQL;看起来你的 config/database.yml 文件是正确的,因为它正在寻找环境变量 RDS_HOSTNAME - 所以我最好的猜测是你没有设置它并且它默认为您的本地主机,因为它是空的。

您需要设置此环境变量以及此处说明的其他项目(数据库、用户、密码和端口)才能使其正常工作。

This StackOverflow answer说明如何为 Elastic Beanstalk 设置环境变量。

关于postgresql - 无法通过 EC2 连接到 Amazon PostgreSQL RDS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47545364/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com