从外部连接到 fly.io 的 PostgreSQL 的方法 (Note: This paraphrase is presented in Simplified Chinese)
我曾经使用render.com的免费PostgreSQL作为数据库。然而,render.com的免费套餐在90天后会删除数据库,这是一个问题。因此,我决定使用fly.io的PostgreSQL。但是,请注意,要连接到fly.io的PostgreSQL,您需要分配一个IPv4地址,这需要2美元/月费用。
创建 PostgreSQL
执行以下命令创建数据库。
fly postgres create
在这个问题中,会出现一个询问:“?选择一个应用程序名称(留空以生成一个):”。我们在这里假设设置了一个名为“example”的名称,并进行解释。完成后,会显示用户名和密码,请记下来。
IPv4的分配等
將分配IPv4地址。在這個過程中,會出現類似「每月需要支出2美元可以嗎?」的問題,我們回答「是」。
fly ips allocate-v4 --app example
分配IPv6地址。
fly ips allocate-v6 --app example
当执行以下命令时,将创建fly.toml文件。
fly config save --app example
确认 fly.toml 文件存在后,执行以下命令。此处指定版本为14。
fly deploy . --app example --image flyio/postgres:14
可以从外部进行连接。
在公式文档中,connection string的解释如下:
postgres://{username}:{password}@{hostname}:{port}/{database}?optionsusername和password是根据之前的记录确定的。hostname在这里是”example.fly.dev”。对于我来说,没有对应{database}的部分。我使用了名为POSTGRES_DB的环境变量来替代{database}部分,我指定POSTGRES_DB=”。然而,这样做并没有成功。所以,我在代码中通过删除指定数据库名称的方式成功连接了数据库。
postgres://{username}:{password}@{hostname}:{port}/{database}?optionsusername和password是根据之前的记录确定的。hostname在这里是”example.fly.dev”。对于我来说,没有对应{database}的部分。我使用了名为POSTGRES_DB的环境变量来替代{database}部分,我指定POSTGRES_DB=”。然而,这样做并没有成功。所以,我在代码中通过删除指定数据库名称的方式成功连接了数据库。
请提供更详细的内容。