【问题标题】:Cannot connect to RDS Postgres using Golang Gorm无法使用 Golang Gorm 连接到 RDS Postgres
【发布时间】:2019-08-10 03:09:29
【问题描述】:

我在尝试连接到我的 RDS Postgres 端点时收到此错误

dial tcp 172.xx.xx.x:5432: i/o timeout panic: runtime error: invalid 内存地址或 nil 指针取消引用 [信号 SIGSEGV: 分段违规代码=0x1 addr=0x98 pc=0x1600d16]

似乎连接到端点有问题

.Env 文件

DB_HOST=dbname.asdasddsa.ap-southeast-1.rds.amazonaws.com
DB_PORT=5432
DB_USER=username
DB_NAME=dbname
DB_PASSWORD=password

我的 database.go 文件

func InitDB() *gorm.DB {
    loadEnv() // For environment variables
    psqlInfo := fmt.Sprintf("host=%s user=%s dbname=%s sslmode=disable password=%s",
        os.Getenv("DB_HOST"),
        os.Getenv("DB_USER"),
        os.Getenv("DB_NAME"),
        os.Getenv("DB_PASSWORD"),
    )

    db, err := gorm.Open("postgres", psqlInfo)
    if err != nil {
        fmt.Println(err)
        return nil
    }
    fmt.Println("Connected to the Database")
    DB = db
    return DB
}

我需要在我的 RDS AWS 中配置什么吗?我关注了这篇文章

https://aws.amazon.com/getting-started/tutorials/create-connect-postgresql-db/

并按照配置的确切步骤进行

问候,

【问题讨论】:

  • 您是否将其配置为“可公开访问”?
  • @Praveen 没必要,他们使用私有 IP 地址进行连接。可能是安全组问题。
  • 你试过你的db_host中的IP地址吗?

标签: postgresql go amazon-rds go-gorm


【解决方案1】:

我正在使用此功能连接到我在 RDS 上的 postgres 数据库

package database

import (
    "fmt"

    "github.com/jinzhu/gorm"
    config "github.com/spf13/viper"
)

func Connect() (*gorm.DB, error) {
    return gorm.Open(
        "postgres",
        fmt.Sprintf(
            "host=%s port=%s user=%s dbname=%s password=%s",
            config.GetString("postgres.host"),
            config.GetString("postgres.port"),
            config.GetString("postgres.user"),
            config.GetString("postgres.dbname"),
            config.GetString("postgres.password"),              
        ),
    )
}

请在运行此之前检查您是否有权访问您的 RDS 数据库。 您可以检查您是否可以从 AWS 控制台 -> RDS -> 数据库 -> -> [向下滚动] 在安全组规则下访问数据库 您可以查看是否已添加对安全组的访问权限,以便从您的网络访问您的数据库。

您可以在此处了解有关安全组的更多信息 https://docs.aws.amazon.com/vpc/latest/userguide/VPC_SecurityGroups.html#VPCSecurityGroups

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-05-14
    • 1970-01-01
    • 2017-06-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-19
    • 2022-12-03
    相关资源
    最近更新 更多