我try 使用github.com/jackc/pgx/v5
包在AWS RDS中的Go程序中连接到Postgres数据库,但出现以下错误:
failed to connect to `host=xxxxx.xxxxxxx.us-east-1.rds.amazonaws.com user=golangpg database=golangpg`: server error (FATAL: database "golangpg" does not exist (SQLSTATE 3D000))
exit status 1
即使明确地说数据库不存在也是错误的,但我已经创建了RDS数据库,我也可以通过pgAdmin连接到该数据库.但当我试图连接我的GO代码时,我得到了上面提到的错误.
我已经判断了以下几点
- 安全组允许所有流量通过5432端口
- 在RDS中启用公共访问
- 能够通过pgAdmin连接到同一数据库.
package database
import (
"context"
"fmt"
"os"
"strconv"
"github.com/jackc/pgx/v5"
"github.com/joho/godotenv"
)
func PGConnection() *pgx.Conn {
envErr := godotenv.Load()
if envErr != nil {
fmt.Println("Error in loading .env file, ", envErr)
}
host := os.Getenv("DB_URL")
port := os.Getenv("DB_PORT")
user := os.Getenv("DB_USERNAME")
password := os.Getenv("DB_PASSWORD")
dbname := os.Getenv("DB_NAME")
portInt, er := strconv.Atoi(port)
if er != nil {
fmt.Println("Error in converting string to number", er)
}
var err error
pgConnString := fmt.Sprintf("host=%s port=%d user=%s password=%s dbname=%s sslmode=require", host, portInt, user, password, dbname)
pgConn, err := pgx.Connect(context.Background(), pgConnString)
if err != nil {
fmt.Printf("Unable to connection to database: \n%v\n", err)
os.Exit(1)
} else {
fmt.Println("Database connection establised to db ", dbname)
}
return pgConn
}
var Connection *pgx.Conn = PGConnection()
这里的错误可能是什么.即使在pgAdmin中,我也可以创建表格,但无法从GO代码进行连接.