尝试连接到我的RDS Postgres端点时出现此错误
dial tcp 172.xx.xx.x:5432:i / o timeout panic:runtime error:无效的内存地址或nil指针取消引用[signal SIGSEGV:segmentation violation code = 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/
并按照配置的确切步骤进行操作
问候,
我正在使用此功能连接到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