Не удается подключиться к RDS Postgres с помощью Golang Gorm - PullRequest
0 голосов
/ 19 марта 2019

Я получил эту ошибку при попытке подключиться к моей конечной точке RDS Postgres

dial tcp 172.xx.xx.x: 5432: паника тайм-аута ввода-вывода: ошибка времени выполнения: неверный адрес памяти илиразыменование нулевого указателя [сигнал SIGSEGV: код нарушения сегментации = 0x1 addr = 0x98 pc = 0x1600d16]

Похоже, что существует некоторая проблема с подключением к конечной точке

.Env file

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/

и следовал точным шагам для конфигурации

С уважением,

1 Ответ

0 голосов
/ 02 апреля 2019

Я использую эту функцию для подключения к моей базе данных postgres на RDS

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 -> database -> -> [прокрутить вниз] в разделе «Правила группы безопасности». Вы можете увидеть, добавили ли вы доступ к группе безопасности для доступа к вашей базе данных из вашей сети..

Подробнее о группах безопасности можно узнать здесь https://docs.aws.amazon.com/vpc/latest/userguide/VPC_SecurityGroups.html#VPCSecurityGroups

...