Golang安装godror时出现net/http TLS握手超时错误怎么解决

Golang安装godror时出现net/http TLS握手超时错误怎么解决 我是Go语言的新手。我想用它来编写监控Oracle数据库的脚本。因此,我需要能够与Oracle数据库进行原生通信。我打算为此使用godror。

我尝试在Redhat 7.9 Amazon EC2实例上安装godror。我能够使用yum install安装库,但似乎无法成功安装godror。我甚至直接从GitHub下载了该软件包,但不知道如何从磁盘安装它。

任何帮助都将不胜感激。

谢谢!

[root@zusprlfftorp002 godror-main]# go get -v github.com/godror
go: github.com/go-logfmt/logfmt@v0.5.1: Get "https://proxy.golang.org/github.com/go-logfmt/logfmt/@v/v0.5.1.mod": net/http: TLS handshake timeout
[root@zusprlfftorp002 godror-main]# go get -v github.com/godror@latest
go: github.com/go-logfmt/logfmt@v0.5.1: Get "https://proxy.golang.org/github.com/go-logfmt/logfmt/@v/v0.5.1.mod": net/http: TLS handshake timeout
[root@zusprlfftorp002 godror-main]# go get -v github.com/godror@stable
go: github.com/go-logfmt/logfmt@v0.5.1: Get "https://proxy.golang.org/github.com/go-logfmt/logfmt/@v/v0.5.1.mod": EOF

更多关于Golang安装godror时出现net/http TLS握手超时错误怎么解决的实战教程也可以访问 https://www.itying.com/category-94-b0.html

5 回复

看起来你没有使用完整的URL godror | GO DRiver for ORacle DB

更多关于Golang安装godror时出现net/http TLS握手超时错误怎么解决的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


如果你使用 curlwget 尝试获取 https://github.com/godror/godror,它能正常工作吗,还是你也会遇到错误?

github.com/godror/godror

我可以用 wget 从那个网站下载文件。我注意到很多网站都在讨论 Golang 被用于恶意软件,我在想 Crowdstrike 是否在阻止我安装 Golang 模块。

我运行了你链接中让我执行的命令,但没有得到帮助。你知道如何基于我下载到磁盘的tar文件进行安装吗?

root@zusprlfftorp002:~/golang_godror/delme > go get github.com/godror/godror
go get: module github.com/godror/godror: Get "https://proxy.golang.org/github.com/godror/godror/@v/list": net/http: TLS handshake timeout

这个错误是由于网络连接问题导致无法从Go模块代理下载依赖。以下是几种解决方案:

1. 设置GOPROXY使用国内镜像(推荐)

# 设置阿里云代理
go env -w GOPROXY=https://mirrors.aliyun.com/goproxy/,direct

# 或者使用七牛云代理
go env -w GOPROXY=https://goproxy.cn,direct

# 然后重试安装
go get -v github.com/godror/godror

2. 禁用代理直接连接

# 关闭代理,直接从源码仓库下载
go env -w GOPROXY=direct

# 设置不验证TLS证书(仅测试环境使用)
go env -w GOSUMDB=off

# 重试安装
go get -v github.com/godror/godror

3. 设置超时时间并重试

# 设置更长的超时时间
export GODEBUG=http2client=0  # 禁用HTTP/2
export HTTP_TIMEOUT=60

# 使用go get时指定超时
go get -v -timeout 60s github.com/godror/godror

4. 手动从磁盘安装(你已经下载了源码)

如果你已经下载了godror源码到本地:

# 进入源码目录
cd /path/to/godror-main

# 使用本地路径安装
go mod init your-project
go mod edit -replace github.com/godror/godror=./godror-main

# 或者直接构建
cd godror-main
go build
go install

5. 完整的环境配置示例

# 设置Go环境变量
go env -w GO111MODULE=on
go env -w GOPROXY=https://goproxy.cn,direct
go env -w GOSUMDB=sum.golang.google.cn

# 清理缓存
go clean -modcache

# 安装godror
go get github.com/godror/godror@latest

# 验证安装
go list -m github.com/godror/godror

6. 使用go mod创建项目

# 创建项目目录
mkdir oracle-monitor
cd oracle-monitor

# 初始化模块
go mod init oracle-monitor

# 创建main.go文件
cat > main.go << 'EOF'
package main

import (
    "database/sql"
    "fmt"
    _ "github.com/godror/godror"
)

func main() {
    fmt.Println("Testing godror installation")
}
EOF

# 下载依赖
go mod tidy

对于Redhat 7.9,还需要确保系统时间正确,TLS证书完整:

# 更新系统时间
sudo yum install ntp -y
sudo ntpdate pool.ntp.org

# 更新CA证书
sudo yum update ca-certificates -y

选择适合你网络环境的方法,通常设置国内代理是最有效的解决方案。

回到顶部