我正在尝试使用 Golang 连接到 Snowflake DB。我在网上找到了示例代码,当我在我的机器上运行时它工作正常。 当我将示例代码放入 docker 容器并尝试运行它时,出现以下错误。 我不确定是否需要联系 Snowflake DB 管理员来获取任何证书。有人遇到过类似的问题吗?
https://XXXX.us-east-1.snowflakecomputing.com:443/session/v1/login-request?databaseName=XXXX&requestId=XXXXX&request_guid=XXXX": x509: certificate signed by unknown authority
下面是示例代码。
package main
import (
"database/sql"
"fmt"
"log"
_ "github.com/snowflakedb/gosnowflake"
)
func main() {
user:="XXXX"
password:="XXX"
host:="XXXX.us-east-1.snowflakecomputing.com"
database:="XXX"
warehouse :="XXX"
schema :="XXX"
port :="443"
dsn := fmt.Sprintf("%v:%v@%v:%v/%v",user,password,host,port,database)
fmt.Println("DSN",dsn)
db, err := sql.Open("snowflake", dsn)
if err != nil {
log.Fatal(err)
}
defer db.Close()
query :=`SELECT * FROM INFORMATION_SCHEMA.APPLICABLE_ROLES `
rows, err := db.Query(query)
if err !=nil{
fmt.Println("error in query", err)
return
}
cols, err := rows.Columns()
if err !=nil{
fmt.Println("error in reading columns ", err)
return
}
fmt.Printf("\n\n %+v \n", cols)
}
最佳答案
那是因为您没有形成此 ssl 连接所需的证书。我猜您使用了 scratch
docker 镜像来对您的应用程序进行 dockerize,就像大多数指南所做的那样。
因此,您可以使用类似以下内容从构建器镜像复制所需的 CA 证书:
COPY --from=builder /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/
关于docker - 使用 Golang 从 Docker 连接到 Snowflake 数据库时出现错误 "x509: certificate signed by unknown authority",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67825629/