Closed SchrodingerFish closed 2 days ago
好的,我会在本地尝试复现一下
// 获取数据库连接字符串
host := os.Getenv("DATABASE_HOST")
port := os.Getenv("DATABASE_PORT")
user := os.Getenv("DATABASE_USER")
password := os.Getenv("DATABASE_PASSWORD")
dbname := os.Getenv("DATABASE_NAME")
// 对密码进行 URL 编码
encodedPassword := url.QueryEscape(password)
// 构建连接字符串
databaseURL := fmt.Sprintf("postgres://%s:%s@%s:%s/%s", user, encodedPassword, host, port, dbname)
// 配置连接池
config, err := pgxpool.ParseConfig(databaseURL)
if err != nil {
log.Fatalf("Unable to parse DATABASE_URL: %v", err)
}
我试过这种处理可以解决这个问题
后续会修复此问题,也欢迎提pr
关于特殊字符的处理,目前来说确实存在该问题。一种不修改代码的解决方法。
使用环境变量单独定义有特殊字符的字段
如果你的密码有特殊字符,那你可以这样定义环境变量
PGPASSWORD=123456ps@wd~%^&*
然后你的SQL_DSN环境变量可以这样定义
SQL_DSN=postgres://postgres@localhost:5432/oneapi
关于postgres的环境变量可以参考 https://github.com/jackc/pgx
问题描述 如题 复现步骤 Docker部署时配置PostgreSQL:SQL_DSN=postgres://postgres:123456@localhost:5432/oneapi 例如数据库密码中,含有~!@#$%^&*等特殊符号时会存在解析问题,造成部署时连不上数据库 预期结果 使用url解析可避免该问题