You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Go run/build执行无响应挂起问题求助(含sqlite3导入场景)

Go编译导入sqlite3包时无响应,陷入循环

我编写了如下简单的main.go文件:

package main

import (
    "fmt"
    "database/sql"
    _ "github.com/mattn/go-sqlite3"
)

func main() {
    db, err := sql.Open("sqlite3", "mydb.db")

    if err != nil {
        panic(err)
    }

    defer db.Close()

    fmt.Println("Opened Successfully")
}

已下载所需依赖包,但执行go run .或go build .时,编译器无响应,陷入类似无限循环的状态。移除_ "github.com/mattn/go-sqlite3"导入语句后,程序会正常抛出错误:panic: sql: unknown driver "sqlite3" (forgotten import?)。该问题在导入部分其他包时也会出现。

我的go.mod文件内容如下:

module go-sqlite

go 1.18

require github.com/mattn/go-sqlite3 v1.14.15

Go版本信息:go version go1.18.1 linux/amd64


解决办法

1. 检查并安装C编译环境

github.com/mattn/go-sqlite3是基于cgo的绑定包,编译必须依赖C编译器(如gcc)。如果系统没装gcc,就会导致编译卡住:

  • Debian/Ubuntu系统:执行sudo apt install gcc
  • CentOS/RHEL系统:执行sudo yum install gcc
    安装完成后重新编译试试。

2. 尝试禁用cgo(仅作排查用)

如果不想依赖C环境,可以临时禁用cgo验证问题根源,但注意这个驱动本身依赖cgo,禁用后大概率无法正常运行:
执行CGO_ENABLED=0 go run .,如果报错说明必须依赖C环境,回到方案1即可。

3. 更新依赖或Go版本

当前Go版本1.18.1和sqlite3包v1.14.15可能存在兼容性问题:

  • 更新sqlite3包:go get github.com/mattn/go-sqlite3@latest
  • 升级Go到较新的稳定版(比如1.21+),新版本对cgo编译和依赖管理有优化。

4. 清理模块缓存

缓存的依赖包损坏也可能导致编译异常:
先执行go clean -modcache清理缓存,再运行go mod tidy重新拉取依赖,之后再尝试编译。

5. 检查系统资源

编译卡住时用top或htop看CPU、内存占用:

  • 如果go或gcc进程占用极高,可能是首次编译cgo包需要较长时间,多等一会儿;
  • 如果资源占用极低却一直卡住,说明环境有问题,参考前面的方案排查。

内容的提问来源于stack exchange,提问作者Ibrahim Sharaf

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 23:35:23